Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

PH Evaluator Python package (phevaluator)

GitHub Workflow Status PyPI version PyPI downloads Apache_2.0

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 commit

    check where to correct (without formatting)

    black . --diff --color

    format all

    black .