phevaluator


Namephevaluator JSON
Version 0.5.3.1 PyPI version JSON
download
home_pagehttps://github.com/HenryRLee/PokerHandEvaluator/
SummaryPH Evaluator - an efficient Poker Hand Evaluator based on a Perfect Hash algorithm
upload_time2024-03-21 05:10:32
maintainerNone
docs_urlNone
authorHenry Lee
requires_python<4,>=3.7
licenseApache License, Version 2.0
keywords poker texas-holdem poker-evaluator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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"
}
        
Elapsed time: 3.48374s