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 modepip install -e .
The installed package reflects changes to files inside the
phevaluatorfolder automatically. -
recommended to format with
blackbefore 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file phevaluator-0.5.3.1.tar.gz.
File metadata
- Download URL: phevaluator-0.5.3.1.tar.gz
- Upload date:
- Size: 3.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6029bb5e85474f180d5f278ae0ed04ea9b1a13134bc9282ed2390efa9cdc4cae
|
|
| MD5 |
a1edf7cffdc02069d66cee5934c89dae
|
|
| BLAKE2b-256 |
6feaf19ce13fea92bba5b2184f2bbfb86a76334aa3f7a093cf85faa2461f9922
|
File details
Details for the file phevaluator-0.5.3.1-py3-none-any.whl.
File metadata
- Download URL: phevaluator-0.5.3.1-py3-none-any.whl
- Upload date:
- Size: 3.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8fe0760293e9af70342c9d07a0d0091d030288af12abb585eff9ef864d8bfe1
|
|
| MD5 |
137faf56d76ca6ad5f5a5500020ea1ca
|
|
| BLAKE2b-256 |
f6867e0ba131ca16b6af45e0f43fae025f688d015f7da8dbb9565686c83c0269
|