Wonderwords
Generate random words and sentences with ease in python
https://github.com/mrmaxguns/wonderwordsmodule/workflows/Python%20package/badge.svg
Quick links:
Wonderwords is a python package useful for generating random words and
structured random sentences. It also comes with a colorful command line
interface for quickly generating random words. The latest version is available
on GitHub while the stable
version is available on PyPI.
Table of Contents
- Features
- Installation
- Usage
- The Wonderwords Python API
- The Wonderwords CLI
- Versioning
- License
- Contributing
- Credits
Features
Here's what Wonderwords is capable of:
- Random word generation
- Specify word length, what it starts and ends with, category, and even custom
regular expressions!
- Use custom word lists and define custom categories of words
- Beautiful command line interface
- Easy-to-use interface and comprehensive documentation
- Open source!
Installation
To install the latest version of Wonderwords, use your favorite package manager
for the Python Package Index to install the wonderwords
package. For example
with pip:
pip install wonderwords
To upgrade Wonderwords with pip use:
pip install --upgrade wonderwords
To verify that the installation worked, import Wonderwords in python:
import wonderwords
If you get a ModuleNotFound
error, make sure that you have installed
Wonderwords from the step above. For further issues,
open a new issue from the GitHub page.
Usage
This section will briefly describe Wonderwords usage. Since Wonderwords has
a command line interface and python module, you will find two subsections.
The Wonderwords Python API
The base random word generation class is the RandomWord
class. You can
generate words with the word
method:
from wonderwords import RandomWord
r = RandomWord()
r.word()
r.word(starts_with="a", ends_with="en")
r.word(include_parts_of_speech=["nouns", "adjectives"])
r.word(word_min_length=3, word_max_length=8)
r.word(regex=".*a")
r.word(starts_with="ru", word_max_length=10, include_parts_of_speech=["verbs"])
You can also get a list of all words matching some criteria using the filter
method:
r.filter(starts_with="am")
r.filter(ends_with="k", include_parts_of_speech=["verbs"], word_min_length=4)
You can also generate a random list of words with the random_words
method.
This is much like the filter method, except you specify the amount of words
to return, and the words are randomly chosen. If there aren't enough words to
satisfy the amount, a NoWordsToChooseFrom
exception is raised:
r.random_words(3, include_parts_of_speech=["nouns"])
r.random_words(5, starts_with="o", word_min_length=10)
r.random_words(100, starts_with="n", word_min_length=16)
r.random_words(100, starts_with="n", word_min_length=16, return_less_if_necessary=True)
Generating random sentences is easy using the RandomSentence
class:
from wonderwords import RandomSentence
s = RandomSentence()
s.bare_bone_sentence()
s.simple_sentence()
s.bare_bone_with_adjective()
s.sentence()
More advanced usage (and a tutorial!) is found in the documentation, such as
adding custom categories of words. The full documentation with all information
can be found at: https://wonderwords.readthedocs.io
The Wonderwords CLI
Wonderwords provides a command line interface, too, which can be used with the
wonderwords
command. Usage:
usage: wonderwords [-h] [-w] [-f] [-l LIST] [-s {bb,ss,bba,s}] [-v] [-sw STARTS_WITH] [-ew ENDS_WITH]
[-p {noun,verb,adjective,nouns,verbs,adjectives} [{noun,verb,adjective,nouns,verbs,adjectives} ...]] [-min WORD_MIN_LENGTH]
[-max WORD_MAX_LENGTH] [-r REGEX] [-d DELIMITER]
optional arguments:
-h, --help show this help message and exit
-w, --word, --random-word
generate a random word
-f, --filter filter a list of words matching the criteria specified
-l LIST, --list LIST return a list of words of a certain length
-s {bb,ss,bba,s}, --sentence {bb,ss,bba,s}
return a sentence based on the structure chosen
-v, --version Print the version number and exit
-sw STARTS_WITH, --starts-with STARTS_WITH
specify what string the random word(s) should start with
-ew ENDS_WITH, --ends-with ENDS_WITH
specify what string the random word(s) should end with
-p {noun,verb,adjective,nouns,verbs,adjectives} [{noun,verb,adjective,nouns,verbs,adjectives} ...], --parts-of-speech {noun,verb,adjective,nouns,verbs,adjectives} [{noun,verb,adjective,nouns,verbs,adjectives} ...]
specify to only include certain parts of speech (by default all parts of speech are included)
-min WORD_MIN_LENGTH, --word-min-length WORD_MIN_LENGTH
specify the minimum length of the word(s)
-max WORD_MAX_LENGTH, --word-max-length WORD_MAX_LENGTH
specify the maximum length of the word(s)
-r REGEX, --regex REGEX, --re REGEX, --regular-expression REGEX
specify a python-style regular expression that every word must match
-d DELIMITER, --delimiter DELIMITER
Specify the delimiter to put between a list of words, default is ', '
The basic commands are:
-w
: generate a random word-f
: which works much like the filter
function to return all words matching
a certain criteria-l LIST
: get a list of LIST
random words-s {bb,ss,bba,s}
: generate a random sentence:
bb
: bare bone sentencess
: simple sentence (bare bone sentence with direct object)bba
: bare bone sentence with adjectives
: generate a simple sentence with an adjective
Versioning
During its early stages, Wonderwords didn't have a set versioning system and
therefore, versions before v2.0.0-alpha
are in disarray. Starting with version
2 alpha, Wonderwords uses sematic versioning.
License
Wonderwords is open source and is distributed under the MIT license. See LICENSE
for more details.
Contributing
All contributions are welcome and we hope Wonderwords will continue growing.
Start out by reading CONTRIBUTING.md
for contributing guidelines and how to
get started.
Credits
Wonderwords has been made possible thanks to the following works: