Skip to main content

Generate random english words and phrases.

Project description

Wonderwords

Generate random words and sentences with ease in python

PyPI - Downloads Libraries.io SourceRank PyPI - License 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()

# generate a random word
r.word()

# random word that starts with a and ends with en
r.word(starts_with="a", ends_with="en")

# generate a random noun or adjective, by default all parts of speech are included
r.word(include_parts_of_speech=["nouns", "adjectives"])

# generate a random word between the length of 3 and 8 characters
r.word(word_min_length=3, word_max_length=8)

# generate a random word with a custom regular expression
r.word(regex=".*a")

# you can combine multiple filtering options
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:

# get a list of ALL words that start with "am"
r.filter(starts_with="am")

# you can use all the options found in the word method:
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:

# get a list of 3 random nouns
r.random_words(3, include_parts_of_speech=["nouns"])

# you can use all the options found in the word method
r.random_words(5, starts_with="o", word_min_length=10)

# if the amount of words you want to get is larger than the amount of words
# there are, a NoWordsToChooseFrom exception is raised:
r.random_words(100, starts_with="n", word_min_length=16)
# there are less than 100 words that are at least 16 letters long and start with
# n, so an exception is raised

# you can silence the NoWordsToChooseFrom exception and return all words even
# if there are less, by setting return_less_if_necessary to True
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()

# Get a random bare-bone sentence
s.bare_bone_sentence()

# Get a random bare-bone sentence with a direct object
s.simple_sentence()

# Get a random bare-bone sentence with an adjective
s.bare_bone_with_adjective()

# Get a random sentence with a subject, predicate, direct object and 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 sentence
    • ss: simple sentence (bare bone sentence with direct object)
    • bba: bare bone sentence with adjective
    • s: 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:

Project details


Download files

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

Source Distribution

wonderwords-3.0.1.tar.gz (73.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wonderwords-3.0.1-py3-none-any.whl (51.7 kB view details)

Uploaded Python 3

File details

Details for the file wonderwords-3.0.1.tar.gz.

File metadata

  • Download URL: wonderwords-3.0.1.tar.gz
  • Upload date:
  • Size: 73.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for wonderwords-3.0.1.tar.gz
Algorithm Hash digest
SHA256 5ee43ab6f13823a857a7c3d58c7b4db6a1350bd3aa5f914ed379ad49042a1c36
MD5 07841b065d1a4af3e2bce9800c267c7c
BLAKE2b-256 ff23e144fc3dfabb845dc1d94c45315d97b308cf75a664e3db3a89aeb1cb505d

See more details on using hashes here.

File details

Details for the file wonderwords-3.0.1-py3-none-any.whl.

File metadata

  • Download URL: wonderwords-3.0.1-py3-none-any.whl
  • Upload date:
  • Size: 51.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for wonderwords-3.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4dd66deb6a76ca9e0b0422d1d3e111f9b910d7c16922d42de733ee8def98f8d0
MD5 c2f4080dac1bbb637cbb10374531b452
BLAKE2b-256 a475855c2062d28b8e9247939f8262fb2f4ff3b12a49e4bab9fd1ba16cc5df82

See more details on using hashes here.

Supported by

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