{"id":22687302,"url":"https://github.com/dead-beef/markovchain","last_synced_at":"2025-07-08T22:04:53.721Z","repository":{"id":57439746,"uuid":"97960523","full_name":"dead-beef/markovchain","owner":"dead-beef","description":"Markov chain generator","archived":false,"fork":false,"pushed_at":"2022-04-29T15:28:15.000Z","size":4783,"stargazers_count":18,"open_issues_count":0,"forks_count":4,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-15T16:56:04.443Z","etag":null,"topics":["markov-chain","markov-image-generator","markov-text-generator","python-library","python-script","python3"],"latest_commit_sha":null,"homepage":"https://dead-beef.github.io/markovchain/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dead-beef.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-07-21T15:10:11.000Z","updated_at":"2025-01-05T15:43:32.000Z","dependencies_parsed_at":"2022-09-26T17:20:45.740Z","dependency_job_id":null,"html_url":"https://github.com/dead-beef/markovchain","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/dead-beef/markovchain","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-beef%2Fmarkovchain","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-beef%2Fmarkovchain/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-beef%2Fmarkovchain/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-beef%2Fmarkovchain/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dead-beef","download_url":"https://codeload.github.com/dead-beef/markovchain/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dead-beef%2Fmarkovchain/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260697389,"owners_count":23048217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["markov-chain","markov-image-generator","markov-text-generator","python-library","python-script","python3"],"created_at":"2024-12-09T23:17:52.873Z","updated_at":"2025-07-08T22:04:53.702Z","avatar_url":"https://github.com/dead-beef.png","language":"Python","readme":"markovchain\n===========\n\n.. image:: https://img.shields.io/pypi/v/markovchain.svg\n   :target: https://pypi.python.org/pypi/markovchain\n.. image:: https://img.shields.io/pypi/status/markovchain.svg\n   :target: https://pypi.python.org/pypi/markovchain\n.. image:: https://img.shields.io/pypi/format/markovchain.svg\n   :target: https://pypi.python.org/pypi/markovchain\n.. image:: https://img.shields.io/librariesio/github/dead-beef/markovchain.svg\n   :target: https://libraries.io/pypi/markovchain\n.. image:: https://img.shields.io/pypi/pyversions/markovchain.svg\n   :target: https://python.org\n.. image:: https://img.shields.io/pypi/l/markovchain.svg\n   :target: https://github.com/dead-beef/markovchain/blob/master/LICENSE\n\nOverview\n--------\n\nMarkov chain generator\n\nRequirements\n------------\n\n-  `Python 3 \u003chttps://www.python.org/\u003e`__\n\nInstallation\n------------\n\n.. code:: bash\n\n    pip install markovchain\n\n.. code:: bash\n\n    pip install markovchain[image]\n\n.. code:: bash\n\n    git clone https://github.com/dead-beef/markovchain\n    cd markovchain\n    pip install -e .[dev]\n\nBuilding\n--------\n\n.. code:: bash\n\n    ./build.sh\n\nTesting\n-------\n\n.. code:: bash\n\n    ./test\n\nModule usage\n------------\n\n-  `Module documentation \u003chttps://dead-beef.github.io/markovchain/\u003e`__\n\nExamples\n~~~~~~~~\n\nText\n^^^^\n\n.. code:: python\n\n    from markovchain import JsonStorage\n    from markovchain.text import MarkovText, ReplyMode\n\n    markov = MarkovText()\n\n    with open('data.txt') as fp:\n        markov.data(fp.read())\n\n    with open('data2.txt') as fp:\n        for line in fp:\n            markov.data(line, part=True)\n    markov.data('', part=False)\n\n    print(markov())\n    print(markov(max_length=16, reply_to='sentence start', reply_mode=ReplyMode.END))\n\n    markov.save('markov.json')\n\n    markov = MarkovText.from_file('markov.json')\n\nImage\n^^^^^\n\n.. code:: python\n\n    from PIL import Image\n    from markovchain import JsonStorage\n    from markovchain.image import MarkovImage\n\n    markov = MarkovImage()\n\n    markov.data(Image.open('input.png'))\n\n    width = 32\n    height = 16\n    img = markov(width, height)\n    with open('output.png', 'wb') as fp:\n        img.save(fp)\n\n    markov.save('markov.json')\n\n    markov = MarkovImage.from_file('markov.json')\n\nCLI usage\n---------\n\n::\n\n    \u003e markovchain -h\n    usage: markovchain [-h] [-v] {text,image} ...\n\n    positional arguments:\n      {text,image}\n\n    optional arguments:\n      -h, --help     show this help message and exit\n      -v, --version  show program's version number and exit\n\nData types\n~~~~~~~~~~\n\n+----------------+-------------------------+---------------------+\n| File name      | File type               | Storage class       |\n+================+=========================+=====================+\n| None (stdout)  | JSON                    | JsonStorage         |\n+----------------+-------------------------+---------------------+\n| \\*.json        | JSON                    | JsonStorage         |\n+----------------+-------------------------+---------------------+\n| \\*.json.bz2    | bzip2 compressed JSON   | JsonStorage         |\n+----------------+-------------------------+---------------------+\n| Other          | SQLite 3 database       | SqliteStorage       |\n+----------------+-------------------------+---------------------+\n\nExamples\n~~~~~~~~\n\nText\n^^^^\n\n.. code:: bash\n\n    markovchain text create --output text.db input1.txt input2.txt\n    markovchain text update text.db input3.txt input4.txt\n    markovchain text generate text.db\n    markovchain text generate --count 16 --start 'sentence start' text.db\n\nImage\n^^^^^\n\n.. code:: bash\n\n    markovchain image create --progress --output img.db img1.png img2.png\n    markovchain image update --progress img.db img3.png img4.png\n    markovchain image generate --progress --size 64 64 --count 4 img.db img%02d.png\n    markovchain image filter --progress img.png output.png\n\nSettings\n^^^^^^^^\n\n-  `Text \u003chttps://github.com/dead-beef/markovchain/tree/master/settings/text\u003e`__\n-  `Image \u003chttps://github.com/dead-beef/markovchain/tree/master/settings/image\u003e`__\n\nText\n~~~~\n\n::\n\n    \u003e markovchain text -h\n    usage: markovchain text [-h] {create,update,settings,generate} ...\n\n    positional arguments:\n      {create,update,settings,generate}\n\n    optional arguments:\n      -h, --help            show this help message and exit\n\ncreate\n^^^^^^\n\n::\n\n    \u003e markovchain text create -h\n    usage: markovchain text create [-h] [-P] [-s SETTINGS] [-o OUTPUT]\n                                   [input [input ...]]\n\n    positional arguments:\n      input                 input file (default: stdin)\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -o OUTPUT, --output OUTPUT\n                            output file (default: stdout)\n\nupdate\n^^^^^^\n\n::\n\n    \u003e markovchain text update -h\n    usage: markovchain text update [-h] [-P] [-s SETTINGS] [-o OUTPUT]\n                                   state [input [input ...]]\n\n    positional arguments:\n      state                 state file\n      input                 input file (default: stdin)\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -o OUTPUT, --output OUTPUT\n                            output file (default: rewrite state file)\n\ngenerate\n^^^^^^^^\n\n::\n\n    \u003e markovchain text generate -h\n    usage: markovchain text generate [-h] [-P] [-nf]\n                                     [-s SETTINGS] [-ss STATE_SIZE]\n                                     [-S START] [-E END] [-R REPLY]\n                                     [-w WORDS] [-c COUNT] [-o OUTPUT]\n                                     state\n\n    positional arguments:\n      state                 state file\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -nf, --no-format      do not format text\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -ss STATE_SIZE, --state-size STATE_SIZE\n                            generator state size\n      -S START, --start START\n                            text start\n      -E END, --end END     text end\n      -R REPLY, --reply REPLY\n                            reply to text\n      -w WORDS, --words WORDS\n                            max text size (default: 256)\n      -c COUNT, --count COUNT\n                            number of generated texts (default: 1)\n      -o OUTPUT, --output OUTPUT\n                        output file (default: stdout)\n\nsettings\n^^^^^^^^\n\n::\n\n    \u003e markovchain text settings -h\n    usage: markovchain text settings [-h] state\n\n    positional arguments:\n      state       state file\n\n    optional arguments:\n      -h, --help  show this help message and exit\n\nImage\n~~~~~\n\n::\n\n    \u003e markovchain image -h\n    usage: markovchain image [-h]\n                             {create,update,settings,generate,filter} ...\n\n    positional arguments:\n      {create,update,settings,generate,filter}\n\n    optional arguments:\n      -h, --help            show this help message and exit\n\ncreate\n^^^^^^\n\n::\n\n    \u003e markovchain image create -h\n    usage: markovchain image create [-h] [-P] [-s SETTINGS] [-o OUTPUT]\n                                    [input [input ...]]\n\n    positional arguments:\n      input                 input file\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -o OUTPUT, --output OUTPUT\n                            output file (default: stdout)\n\nupdate\n^^^^^^\n\n::\n\n    \u003e markovchain image update -h\n    usage: markovchain image update [-h] [-P] [-s SETTINGS] [-o OUTPUT]\n                                    state [input [input ...]]\n\n    positional arguments:\n      state                 state file\n      input                 input file\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -o OUTPUT, --output OUTPUT\n                            output file (default: rewrite state file)\n\ngenerate\n^^^^^^^^\n\n::\n\n    \u003e markovchain image generate -h\n    usage: markovchain image generate [-h] [-P] [-s SETTINGS]\n                                      [-ss STATE_SIZE [STATE_SIZE ...]]\n                                      [-S WIDTH HEIGHT] [-l LEVEL] [-c COUNT]\n                                      state output\n\n    positional arguments:\n      state                 state file\n      output                output file name format string\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -ss STATE_SIZE [STATE_SIZE ...], --state-size STATE_SIZE [STATE_SIZE ...]\n                            generator state sizes\n      -S WIDTH HEIGHT, --size WIDTH HEIGHT\n                            image size (default: \u003cscanner.resize\u003e)\n      -l LEVEL, --level LEVEL\n                            image levels (default: \u003cscanner.levels\u003e)\n      -c COUNT, --count COUNT\n                            generated image count (default: 1)\n\nfilter\n^^^^^^\n\n::\n\n    \u003e markovchain image filter -h\n    usage: markovchain image filter [-h] [-P] [-t {json,sqlite}] [-s SETTINGS]\n                                    [-S STATE] [-ss STATE_SIZE [STATE_SIZE ...]]\n                                    [-l LEVEL] [-c COUNT]\n                                    input output\n\n    positional arguments:\n      input                 input image\n      output                output file name format string\n\n    optional arguments:\n      -h, --help            show this help message and exit\n      -P, --progress        show progress bar\n      -t {json,sqlite}, --type {json,sqlite}\n                            generator type (default: json)\n      -s SETTINGS, --settings SETTINGS\n                            settings json file\n      -S STATE, --state STATE\n                            state file\n      -ss STATE_SIZE [STATE_SIZE ...], --state-size STATE_SIZE [STATE_SIZE ...]\n                            generator state sizes\n      -l LEVEL, --level LEVEL\n                            filter start level (default: 1)\n      -c COUNT, --count COUNT\n                            generated image count (default: 1)\n\nsettings\n^^^^^^^^\n\n::\n\n    \u003e markovchain image settings -h\n    usage: markovchain image settings [-h] state\n\n    positional arguments:\n      state       state file\n\n    optional arguments:\n      -h, --help  show this help message and exit\n\nLicenses\n--------\n\n-  `markovchain \u003chttps://github.com/dead-beef/markovchain/blob/master/LICENSE\u003e`__\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdead-beef%2Fmarkovchain","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdead-beef%2Fmarkovchain","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdead-beef%2Fmarkovchain/lists"}