# PH Evaluator Python package (phevaluator)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/HenryRLee/PokerHandEvaluator/CI?color=green&logo=github)](https://github.com/HenryRLee/PokerHandEvaluator/actions/workflows/ci.yml)
[![PyPI version](https://badge.fury.io/py/phevaluator.svg)](https://badge.fury.io/py/phevaluator)
[![PyPI downloads](https://img.shields.io/pypi/dm/phevaluator)](https://shields.io/category/downloads)
[![Apache_2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/HenryRLee/PokerHandEvaluator/blob/master/python/LICENSE)
## Description
[PH Evaluator](https://github.com/HenryRLee/PokerHandEvaluator) 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
```shell
pip install phevaluator
```
- from source code
```shell
pip install .
```
## Using the library
The main function is the `evaluate_cards` function.
```python
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.
```shell
python3 -m unittest discover -v
```
## Development
- install from source code with `editable mode`
```shell
pip install -e .
```
The installed package reflects changes to files inside the `phevaluator` folder automatically.
- recommended to format with [`black`](https://github.com/psf/black) before commit
check where to correct (without formatting)
```shell
black . --diff --color
```
format all
```shell
black .
```
Raw data
{
"_id": null,
"home_page": "https://github.com/HenryRLee/PokerHandEvaluator/",
"name": "phevaluator",
"maintainer": null,
"docs_url": null,
"requires_python": "<4,>=3.7",
"maintainer_email": null,
"keywords": "poker, texas-holdem, poker-evaluator",
"author": "Henry Lee",
"author_email": "lee0906@hotmail.com",
"download_url": "https://files.pythonhosted.org/packages/6f/ea/f19ce13fea92bba5b2184f2bbfb86a76334aa3f7a093cf85faa2461f9922/phevaluator-0.5.3.1.tar.gz",
"platform": null,
"description": "# PH Evaluator Python package (phevaluator)\n[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/HenryRLee/PokerHandEvaluator/CI?color=green&logo=github)](https://github.com/HenryRLee/PokerHandEvaluator/actions/workflows/ci.yml)\n[![PyPI version](https://badge.fury.io/py/phevaluator.svg)](https://badge.fury.io/py/phevaluator)\n[![PyPI downloads](https://img.shields.io/pypi/dm/phevaluator)](https://shields.io/category/downloads)\n[![Apache_2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/HenryRLee/PokerHandEvaluator/blob/master/python/LICENSE)\n\n## Description\n\n[PH Evaluator](https://github.com/HenryRLee/PokerHandEvaluator) is designed\nfor evaluating poker hands with more than 5 cards. Instead of traversing all\nthe combinations, it uses a perfect hash algorithm to get the hand strength\nfrom a pre-computed hash table, which only costs very few CPU cycles and\nconsiderably small memory (~100kb for the 7 card evaluation). With slight\nmodification, the same algorithm can be also applied to evaluating Omaha\npoker hands.\n\n## Installation\nThe library requires Python 3.\n- from release on PyPI\n ```shell\n pip install phevaluator\n ```\n- from source code\n ```shell\n pip install .\n ```\n\n## Using the library\nThe main function is the `evaluate_cards` function.\n```python\nfrom phevaluator.evaluator import evaluate_cards\n\np1 = evaluate_cards(\"9c\", \"4c\", \"4s\", \"9d\", \"4h\", \"Qc\", \"6c\")\np2 = evaluate_cards(\"9c\", \"4c\", \"4s\", \"9d\", \"4h\", \"2c\", \"9h\")\n\n# Player 2 has a stronger hand\nprint(f\"The rank of the hand in player 1 is {p1}\") # 292\nprint(f\"The rank of the hand in player 2 is {p2}\") # 236\n```\nThe function can take both numbers and card strings (with a format like: 'Ah' or '2C'). Usage examples can be seen in `examples.py`.\n\n## Test\n- The pre-calculated tables (`phevaluator.tables`) are tested by comparing them with the tables generated by test codes.\n- The functionality of the evaluators is tested by comparing with the JSON files generated by the original C++ evaluator.\n- The functionality of the other modules is tested by its purposes.\n\n```shell\npython3 -m unittest discover -v\n```\n\n## Development\n- install from source code with `editable mode`\n ```shell\n pip install -e .\n ```\n The installed package reflects changes to files inside the `phevaluator` folder automatically.\n\n- recommended to format with [`black`](https://github.com/psf/black) before commit\n\n check where to correct (without formatting)\n ```shell\n black . --diff --color\n ```\n format all\n ```shell\n black .\n ```\n\n",
"bugtrack_url": null,
"license": "Apache License, Version 2.0",
"summary": "PH Evaluator - an efficient Poker Hand Evaluator based on a Perfect Hash algorithm",
"version": "0.5.3.1",
"project_urls": {
"Bug Tracker": "https://github.com/HenryRLee/PokerHandEvaluator/issues",
"Documentation": "https://github.com/HenryRLee/PokerHandEvaluator/tree/master/Documentation",
"Homepage": "https://github.com/HenryRLee/PokerHandEvaluator/",
"Source": "https://github.com/HenryRLee/PokerHandEvaluator/tree/master/python"
},
"split_keywords": [
"poker",
" texas-holdem",
" poker-evaluator"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "f6867e0ba131ca16b6af45e0f43fae025f688d015f7da8dbb9565686c83c0269",
"md5": "137faf56d76ca6ad5f5a5500020ea1ca",
"sha256": "b8fe0760293e9af70342c9d07a0d0091d030288af12abb585eff9ef864d8bfe1"
},
"downloads": -1,
"filename": "phevaluator-0.5.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "137faf56d76ca6ad5f5a5500020ea1ca",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4,>=3.7",
"size": 3716728,
"upload_time": "2024-03-21T05:10:29",
"upload_time_iso_8601": "2024-03-21T05:10:29.521636Z",
"url": "https://files.pythonhosted.org/packages/f6/86/7e0ba131ca16b6af45e0f43fae025f688d015f7da8dbb9565686c83c0269/phevaluator-0.5.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6feaf19ce13fea92bba5b2184f2bbfb86a76334aa3f7a093cf85faa2461f9922",
"md5": "a1edf7cffdc02069d66cee5934c89dae",
"sha256": "6029bb5e85474f180d5f278ae0ed04ea9b1a13134bc9282ed2390efa9cdc4cae"
},
"downloads": -1,
"filename": "phevaluator-0.5.3.1.tar.gz",
"has_sig": false,
"md5_digest": "a1edf7cffdc02069d66cee5934c89dae",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4,>=3.7",
"size": 3689192,
"upload_time": "2024-03-21T05:10:32",
"upload_time_iso_8601": "2024-03-21T05:10:32.038875Z",
"url": "https://files.pythonhosted.org/packages/6f/ea/f19ce13fea92bba5b2184f2bbfb86a76334aa3f7a093cf85faa2461f9922/phevaluator-0.5.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-21 05:10:32",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "HenryRLee",
"github_project": "PokerHandEvaluator",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "phevaluator"
}