Metadata-Version: 2.1
Name: markovname
Version: 1.0.0
Summary: Markov process-based name and word generator, based on Sam Twidale's Haxe code.
Home-page: https://github.com/bicobus/pyMarkovNameGenerator
License: EUPL-1.2
Keywords: markov,namegen,markov-chain,random-generation
Author: bicobus
Author-email: bicobus@keemail.me
Requires-Python: >=3.9,<4.0
Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: wcwidth (>=0.2.5,<0.3.0)
Project-URL: Repository, https://github.com/bicobus/pyMarkovNameGenerator
Description-Content-Type: text/x-rst

.. image:: https://img.shields.io/pypi/pyversions/markovname
   :target: https://pypi.org/project/markovname

.. image:: https://github.com/bicobus/pyMarkovNameGenerator/actions/workflows/tests.yml/badge.svg
   :target: https://github.com/bicobus/pyMarkovNameGenerator/actions/workflows/tests.yml

=======================
 pyMarkovNameGenerator
=======================

Markov chain-based name generator based on `Sam Twidale`_ implementation in
Haxe. consider this work to be a python port with functionnally the same level
of functionality. Feed it a list of training data, and it'll spew out a bunch of
new words.

It comes with the training data compiled by Sam, and made available under
Creative Commons ``BY-NC 4.0``.

If you appreciate this work, consider `buying me a coffee`_.

Install using::

  pip install markovname

Requirements
============
This software has been developped and tested with python 3.9. Any earlier
version might not work.

A minor dependency on wcwidth_, make sure it is installed using ``pip``, your
package manager or whatever method you are familiar with. It is only necessary
if you plan to use the main module. If you're only interested in the generator,
then ``wcwidth`` can be ignored.

If you have poetry_ available, you can initialize a virtual environment with::

    poetry install

Usage
=====

The software reads sample data from json formatted datasets. See the data folder
of this repository for examples.

::

   usage: __main__.py [-h] [--list] [-n NUMBER] [-o ORDER] [-p PRIOR] [-g KEY] [-V] DATA

   positional arguments:
     DATA                  Path containing the data sets.

   optional arguments:
     -h, --help            show this help message and exit
     --list                List the various dataset available to the software.
                           (default: False)
     -n NUMBER, --number NUMBER
                           Amount of names to generate. (default: 1)
     -o ORDER, --order ORDER
                           Highest order of model to use. Will use Katz's back-
                           off model. It looks for the next letter based on the
                           last "n" letters. (default: 3)
     -p PRIOR, --prior PRIOR
                           The prior adds a constant probability that a random
                           letter is picked from the alphabet when generating a
                           new letter. Must be a number between 0 and 1.
                           (default: 0)
     -g KEY, --generate KEY
                           Which dataset to use. If not specified, use a random
                           available set instead. (default: None)
     -V, --version         show program's version number and exit



.. _Sam Twidale: https://github.com/Tw1ddle/MarkovNameGenerator
.. _wcwidth: https://github.com/jquast/wcwidth/
.. _poetry: https://python-poetry.org/
.. _buying me a coffee: https://ko-fi.com/S6S36HZ6I

