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 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.