Skip to content

Tests Coverage Version Development Stage License Supported Python Versions Supported Python Implementations pre-commit dyce-powered! Bear-ified™

anydyce – Application experiments for dyce

anydyce is a testing ground for various interactive interfaces to dyce (the dice mechanic modeling library). Currently, it includes:

  1. A JupyterLite graphing widget using Matplotlib and Jupyter Widgets for visualizing histograms and pools:
    • Try it! 👉 Try dyce 👈
  2. 💥 New! 💥 A fully functioning, (mostly1) compatible, pure-Python AnyDice language interpreter and interactive playground. Quite a bit of detail is provided on how it was built, how it differs from the original, and all the pitfalls and nuances discovered along the way.
    • Try it! 👉 Try the AnyDice-compatible playground 👈

JupyterLite may not save your work!

JupyterLite attempts to make use of your browser’s local storage for saving notebook changes. Browser environments vary, including how long local storage is persisted. Further, Binder loses all state once its instances shut down after a period of inactivity. Be careful to download any notebooks you wish to keep.

If you find anything lacking in any way, please don’t hesitate to bring it to my attention.

Running locally

anydyce is also available as a PyPI package and as source. To try it on your own hardware, use the quickstart-local.sh script to create a local virtual environment and bootstrap a local copy.

1
2
3
4
% git clone https://github.com/posita/anydyce.git anydyce && ./anydyce/quickstart-local.sh
...
INFO    -  Documentation built in 4.84 seconds
INFO    -  [20:39:05] Serving on http://127.0.0.1:8000/

Once loaded, try the following:

Requirements

anydyce requires a relatively modern version of Python:

It has the following runtime dependencies:

anydyce is proudly 100% Bear-ified™! 👌🏾🐻

License

anydyce is licensed under the MIT License. See the included LICENSE file for details. Source code is available on GitHub.


  1. It is not bug-compatible, instead including fixes for several longstanding implementation errors in AnyDice itself. Further, it does not support AnyDice’s legacy "..." syntax.