fabulist module¶
(c) 2017 Martin Wendt; see https://github.com/mar10/fabulist Licensed under the MIT license: http://www.opensource.org/licenses/mit-license.php
-
class
fabulist.fabulist.
Fabulist
[source]¶ Bases:
object
Random string factory.
-
generate_quotes
(template, count=None, dedupe=False)[source]¶ Return a generator for random strings.
Parameters: - template (str | str[]) – A string template with embedded macros, e.g. “Hello $(name:mr)!”. If a list of strings are passed, a random template is chosen.
- count (int, optional) – Number of results to generate. Pass None for infinite. Default: None.
- dedupe (bool | set, optional) – Pass True to prevent duplicate results. If a set instance is passed, it will be used to add and check for generated entries. Default: False.
Yields: str – Random variants of template.
-
get_choice
(modifiers, context=None)[source]¶ Return a random entry from a list of values.
Parameters: - modifiers (str) – Additional modifiers, separated by ‘:’. Only one modifier is accepted with a comma separated list of choices. If a single string is passed (i.e. no comma), one random character is returned. Use a backslash to escape comma or colons.
- context (dict, optional) – Used internally to cache template results for back-references.
Returns: str – A randomly selected value.
Examples
fab.get_choice(“foo,bar,baz”) fab.get_choice(“$%?!”) fab.get_choice(“$%?!:,”)
-
get_lorem_paragraph
(sentence_count=(2, 6), dialect='ipsum', entropy=2, keep_first=False, words_per_sentence=(3, 15))[source]¶ Return one random paragraph.
See also
fabulist.lorem_ipsum.LoremGenerator
for more flexible and efficient generators (accessible asFabulist.lorem
).Parameters: - sentence_count (int or tuple(min, max)) – Number of sentences. Default: (2, 6).
- dialect (str, optional) – For example “ipsum”, “pulp”, “trappatoni”. Pass None to pick a random dialect. Default: “ipsum” (i.e. lorem-ipsum).
- entropy (int) – 0: iterate sentences from original text 1: pick a random paragraph, then use it literally 2: pick a random sentence, then use it literally 3: pick random words Default: 2.
- keep_first (bool, optional) – Always return the first sentence as first result. Default: False.
- words_per_sentence (int or tuple(min, max), optional) – Number of words per sentence. This argument is only used for entropy=3. Default: (3, 15).
Returns: str – One paragraph made of random sentences.
-
get_lorem_sentence
(word_count=(3, 15), dialect='ipsum', entropy=3)[source]¶ Return one random sentence.
See also
fabulist.lorem_ipsum.LoremGenerator
for more flexible and efficient generators (accessible asFabulist.lorem
).Parameters: - word_count (int or tuple(min, max), optional) – Tuple with (min, max) number of words per sentence. This argument is only used for entropy=3. Default: (3, 15).
- dialect (str, optional) – For example “ipsum”, “pulp”, “trappatoni”. Pass None to pick a random dialect. Default: “ipsum” (i.e. lorem-ipsum).
- entropy (int) – 0: use first sentence from original text 1: pick a random paragraph, then use the first sentence 2: pick a random sentence 3: mix random words Default: 3.
Returns: str – One random sentence.
-
get_lorem_text
(para_count, dialect='ipsum', entropy=2, keep_first=False, words_per_sentence=(3, 15), sentences_per_para=(2, 6))[source]¶ Generate a number of paragraphs, made up from random sentences.
Paragraphs are seperated by newline.
See also
fabulist.lorem_ipsum.LoremGenerator
for more flexible and efficient generators (accessible asFabulist.lorem
).Parameters: - para_count (int or tuple(min, max)) – Number of paragraphs.
- dialect (str, optional) – For example “ipsum”, “pulp”, “trappatoni”. Pass None to pick a random dialect. Default: “ipsum”.
- keep_first (bool, optional) – Always return the first sentence as first result. Default: False.
- entropy (int) – 0: iterate sentences from original text 1: pick a random paragraph, then use it literally 2: pick a random sentence, then use it literally 3: pick random words Default: 2.
- words_per_sentence (tuple(int, int), optional) – Tuple with (min, max) number of words per sentence. This argument is only used for entropy=3. Default: (3, 15).
- sentences_per_para (tuple(int, int), optional) – Tuple with (min, max) number of sentences per paragraph. Default: (2, 6).
Returns: str – Text made of one or more paragraphs.
-
get_lorem_words
(count=None, dialect='ipsum', entropy=3, keep_first=False)[source]¶ Return a list of random words.
See also
fabulist.lorem_ipsum.LoremGenerator
for more flexible and efficient generators (accessible asFabulist.lorem
).Parameters: - count (int, optional) – Number of words. Pass None for infinite. Default: None.
- dialect (str, optional) – For example “ipsum”, “pulp”, “trappatoni”. Pass None to pick a random dialect. Default: “ipsum” (i.e. lorem-ipsum).
- entropy (int, optional) – 0: iterate words from original text 1: pick a random paragraph, then use it literally 2: pick a random sentence, then use it literally 3: pick random words Default: 3.
- keep_first (bool, optional) – Always return the words of the first sentence as first result. Default: False.
Returns: list[str]
-
get_name
(modifiers=None, context=None)[source]¶ Return a single name string.
This is a convenience variant of
get_word()
with word_type=”name”.Parameters: - modifiers (str, optional) – Additional modifiers, separated by ‘:’. Default: “”.
- context (dict, optional) – Used internally to cache template results for back-references.
Returns: str – A random name of the requested form.
-
get_number
(modifiers=None, context=None)[source]¶ Return a string-formatted random number.
Parameters: - modifiers (str) – Additional modifiers, separated by ‘:’. Only one modifier is accepted with a comma separated list of min, max, and width. Example: “0,99,2”.
- context (dict, optional) – Used internally to cache template results for back-references.
Returns: str – A random number matching in the requested range.
Examples
fab.get_number(“0,999,3”)
-
get_quote
(template)[source]¶ Return a single random string.
This is a convenience variant of
generate_quotes()
.Parameters: template (str | str[]) – A string template with embedded macros, e.g. “Hello $(name:mr)!”. If a list of strings are passed, a random template is chosen. Returns: str – A random variant of template.
-
get_word
(word_type, modifiers=None, context=None)[source]¶ Return a random word.
Parameters: - word_type (str) – For example ‘adj’, ‘adv’, ‘name’, ‘noun’, ‘verb’.
- modifiers (str, optional) – Additional modifiers, separated by ‘:’. Default: “”.
- context (dict, optional) – Used internally to cache template results for back-references.
Returns: str – A random word of the requested type and form.
-
-
class
fabulist.fabulist.
_WordList
(path)[source]¶ Bases:
object
Common base class for all word lists.
Note
This class is not instantiated directly, but provides common implementations for reading, writing and processing of word list data.
Parameters: path (str) – Location of dictionary csv file. -
path
¶ str – Location of dictionary csv file.
-
data
¶ dict – Maps word lemmas to dicts of word data (i.e. word-forms).
-
key_list
¶ list – List of all known word lemmas.
-
tag_map
¶ dict – Maps tag names to sets of word lemmas.
-
add_entry
(entry)[source]¶ Add a single entry to the word list.
The entry argument should have the same keys as the current CSV file format (see
csv_format
). If entry values are omitted or None, they are passed to_process_entry()
in order to compute a default. If entry values are set to False, they are considered ‘not available’. For example There is no plural form of ‘information’.Callers should also call
update_data()
later, to make sure thatkey_list
is up-to-date.Parameters: entry (dict) – Word data.
-
all_modifiers
= None¶
-
apply_macro
(macro, entry)[source]¶ Return a word-form for an entry dict, according to macro modifiers.
Parameters: - macro (
Macro
) – The parsed macro instance. - entry (dict) – Dict of word forms as stored in
data
.
Returns: str – The requested word form.
- macro (
-
computable_modifiers
= frozenset([])¶
-
csv_format
= None¶
-
extra_modifiers
= None¶
-
form_modifiers
= None¶
-
get_random_entry
(macro)[source]¶ Return a random entry dict, according to modifiers.
Parameters: macro ( Macro
) – A parsed template macro.Returns: dict – A random entry from key_list
.
-
load
(path=None)[source]¶ Load and add list of entries from text file.
Normally, we don’t have to call this method explicitly, because entries are loaded lazily on demand. It may be useful however to add supplemental word lists however.
This method also calls
update_data()
.Parameters: path (str, optional) – path to CSV file. Defaults to path
.
-
save_as
(path)[source]¶ Write current data to a text file.
The resulting CSV file has the format as defined in
csv_format
. For better compression, word forms that are computable are stored as empty strings (‘’). Comments from the original file are retained at the top.Parameters: path (str) – path to CSV file.
-
word_type
= None¶
-