Skip to main content

A Python library for simulating poker games with custom player strategies

Project description

Maverick banner

Documentation Status Code Coverage Code Quality Code Style License

Documentation

BuyMeACoffee

A Python library for simulating poker games with custom player strategies.

Poker is a great sandbox for decision-making systems: hidden information, imperfect opponents, probabilistic outcomes, and lots of room for experimentation.

Maverick is a Python library for simulating poker games with custom player strategies. It gives you a complete poker game loop (dealing, betting rounds, showdown, pot distribution) plus a clean player interface so you can swap strategies in and out.

Highlights

Maverick is designed for building and testing strategies:

  • Composable API: build your own players by implementing a single method.
  • State-machine engine: clear phases and transitions, easier to reason about.
  • Event stream: observe what happens (for logging, analytics, replay, debugging).
  • Hand evaluation utilities: score hands and compare outcomes.

If you’ve ever wanted to:

  • benchmark bots against each other,
  • run repeatable simulations,
  • prototype an agent that makes betting decisions,

…Maverick is meant to make that workflow straightforward.

Installation

You can install Maverick from PyPI

pip install maverick

Your first game (minimal example)

Here’s an end-to-end example using built-in bots:

from maverick import Game, PlayerLike, PlayerState
from maverick.players import FoldBot, CallBot, AggressiveBot

# Create a game with blinds and a stop condition
game = Game(small_blind=10, big_blind=20, max_hands=10)

# Create players
players: list[PlayerLike] = [
    CallBot(name="CallBot", state=PlayerState(stack=1000)),
    AggressiveBot(name="AggroBot", state=PlayerState(stack=1000)),
    FoldBot(name="FoldBot", state=PlayerState(stack=1000)),
]

for player in players:
    game.add_player(player)

game.start()

# Inspect results
for player in players:
    print(f"{player.name} - Stack: {player.state.stack}")

(See the documentation for more examples and APIs.)

Documentation

The project has extensive documentation hosted on ReadTheDocs. Most library information is documented there, with only the essentials kept here.

Changes and Versioning

The changelog is maintained in CHANGELOG.md. The project adheres to semantic versioning.

Contributing

Contributions are currently expected in any the following ways:

  • finding bugs If you run into trouble when using the library and you think it is a bug, feel free to raise an issue.
  • feedback All kinds of ideas are welcome. For instance if you feel like something is still shady (after reading the user guide), we want to know. Be gentle though, the development of the library is financially not supported yet.
  • feature requests Tell us what you think is missing (with realistic expectations).
  • examples If you've done something with the library and you think that it would make for a good example, get in touch with the developers and we will happily inlude it in the documention.
  • funding Use one of the supported funding channels. Any amount you can afford is appreciated.
  • sharing is caring If you like the library, share it with your friends or colleagues so they can like it too.

In all cases, read the contributing guidelines before you do anything.

License

This package is licensed under the MIT license.

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

maverick-0.2.2.tar.gz (37.6 kB view details)

Uploaded Source

Built Distribution

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

maverick-0.2.2-py3-none-any.whl (59.4 kB view details)

Uploaded Python 3

File details

Details for the file maverick-0.2.2.tar.gz.

File metadata

  • Download URL: maverick-0.2.2.tar.gz
  • Upload date:
  • Size: 37.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maverick-0.2.2.tar.gz
Algorithm Hash digest
SHA256 812647a7d8df32c09796fbe351655bbf39e2be5c896a75869bd9182d22c91ebf
MD5 f2de747640f54d3ddf81cad3125f11bf
BLAKE2b-256 8e6aec4cf8b7fccf866c6eebb06f98a1d61b0392a37c39b5e7ea65831a67caed

See more details on using hashes here.

File details

Details for the file maverick-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: maverick-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 59.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for maverick-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 b69b9bc0378b37c8e1fba1c9749d25f772c9e156ad1bf75b7eb3456a09657909
MD5 399b60050de18311d02e370c25fd7db3
BLAKE2b-256 3c4b31cec57eb859c586a284da493705b5c009d0e6fdb377e16688ee5ce4921a

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