Python port of Kate Compton's tracery text generation library
Project description
Tracery for Python
This is a (rough) port of Kate Compton’s wonderful Tracery to Python. The port is by Allison Parrish.
I’m always writing little one-off recursive template/grammar expansion functions in my Python generative text projects. And I love working 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 of this version of tracery.js in the official repository’s tracery2 branch.
Installation
Install with pip like so:
pip install tracery
You can also download the source code and install manually:
python setup.py install
Usage
See Kate Compton’s Tracery tutorial for 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. The base_english modifiers in tracery.modifiers are 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 line
You 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.
License
This 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.
History
0.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 from hugovk.
0.0.1 (2016-03-09)
First release on Github.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file tracery-0.1.1.tar.gz
.
File metadata
- Download URL: tracery-0.1.1.tar.gz
- Upload date:
- Size: 8.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3fefb23a0b12c6568fdc32bcab2ec6f4395c81ea8568c019fc9905d1eb9dd232 |
|
MD5 | 8ca4b0d5e131c48b1df3c26cf942033a |
|
BLAKE2b-256 | 969a7a7ffa8ace49ac6a3f422fdd83caf8d0ad0d132f01389f02845379033a7b |