Skip to main content

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.

Metadata

Release files for maverick 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for maverick 0.6.0
File Size Uploaded
maverick-0.6.0.tar.gz 40.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for maverick 0.6.0
File Interpreter ABI Platform
maverick-0.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 102.6 kB

Release files / maverick-0.6.0.tar.gz

Download URL maverick-0.6.0.tar.gz
Size 40.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ad4a61cad59803c377091182ef0fb10ae066e6735916bc6a7e80a1dddb93f762
BLAKE2b-256 checksum
How to use checksums
e27f912ef0f2f9e530456c854776f0b10dd3ba5f1ef7352ef1463e65ad6d1c51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / maverick-0.6.0-py3-none-any.whl

Download URL maverick-0.6.0-py3-none-any.whl
Size 62.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
505a8f27c57a4315c17352f5544c2c53e146c08c833bcaf73d2bfc13bdbb9853
BLAKE2b-256 checksum
How to use checksums
3b91b85949d9654f54420e10219365e559a5a2d1899f0ac1cf368742df4bfaee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.6.0 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page