PH Evaluator - an efficient Poker Hand Evaluator based on a Perfect Hash algorithm
Project description
PH Evaluator Python package (phevaluator)
Description
PH Evaluator is designed for evaluating poker hands with more than 5 cards. Instead of traversing all the combinations, it uses a perfect hash algorithm to get the hand strength from a pre-computed hash table, which only costs very few CPU cycles and considerably small memory (~100kb for the 7 card evaluation). With slight modification, the same algorithm can be also applied to evaluating Omaha poker hands.
Installation
The library requires Python 3.
- from release on PyPI
pip install phevaluator
- from source code
pip install .
Using the library
The main function is the evaluate_cards
function.
from phevaluator.evaluator import evaluate_cards
p1 = evaluate_cards("9c", "4c", "4s", "9d", "4h", "Qc", "6c")
p2 = evaluate_cards("9c", "4c", "4s", "9d", "4h", "2c", "9h")
# Player 2 has a stronger hand
print(f"The rank of the hand in player 1 is {p1}") # 292
print(f"The rank of the hand in player 2 is {p2}") # 236
The function can take both numbers and card strings (with a format like: 'Ah' or '2C'). Usage examples can be seen in examples.py
.
Test
- The pre-calculated tables (
phevaluator.tables
) are tested by comparing them with the tables generated by test codes. - The functionality of the evaluators is tested by comparing with the JSON files generated by the original C++ evaluator.
- The functionality of the other modules is tested by its purposes.
python3 -m unittest discover -v
Development
-
install from source code with
editable mode
pip install -e .
The installed package reflects changes to files inside the
phevaluator
folder automatically. -
recommended to format with
black
before commitcheck where to correct (without formatting)
black . --diff --color
format all
black .
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for phevaluator-0.5.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b8fe0760293e9af70342c9d07a0d0091d030288af12abb585eff9ef864d8bfe1 |
|
MD5 | 137faf56d76ca6ad5f5a5500020ea1ca |
|
BLAKE2b-256 | f6867e0ba131ca16b6af45e0f43fae025f688d015f7da8dbb9565686c83c0269 |