{ "info": { "author": "Alexey Lisikhin", "author_email": "lisikhin@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": ".. image:: https://travis-ci.org/MahjongRepository/mahjong.svg?branch=master\n :target: https://travis-ci.org/MahjongRepository/mahjong\n\nPython 2.7 and 3.5+ are supported.\n\nWe support the Japanese version of mahjong only (riichi mahjong).\n\n\nRiichi mahjong hands calculation\n================================\n\nThis library can calculate hand cost (han, fu with details, yaku, and scores) for riichi mahjong (Japanese version).\n\nIt supports optional features like:\n\n========================================================================================== ========================= ===========================\nFeature Keyword parameter Default value\n========================================================================================== ========================= ===========================\nDisable or enable open tanyao yaku has_open_tanyao False\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nDisable or enable aka dora in the hand has_aka_dora False\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nDisable or enable double yakuman (like suuanko tanki) has_double_yakuman True\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nSettings for different kazoe yakuman calculation (it \u0441an be an yakuman or a sanbaiman) kazoe_limit HandConstants.KAZOE_LIMITED\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nSupport kiriage mangan kiriage False\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nAllow to disable additional +2 fu in open hand (you can make 1-20 hand with that setting) fu_for_open_pinfu True\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nDisable or enable pinfu tsumo fu_for_pinfu_tsumo False\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nCounting renhou as 5 han or yakuman renhou_as_yakuman False\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nDisable or enable Daisharin yakuman has_daisharin False\n------------------------------------------------------------------------------------------ ------------------------- ---------------------------\nDisable or enable Daisharin in other suits (Daisuurin, Daichikurin) has_daisharin_other_suits False\n========================================================================================== ========================= ===========================\n\n\nThe code was validated on tenhou.net phoenix replays in total on **11,120,125 hands**.\n\nSo, we can say that our hand calculator works the same way that tenhou.net hand calculation.\n\nProject repository: https://github.com/MahjongRepository/mahjong\n\n\nHow to install\n--------------\n\n::\n\n pip install mahjong\n\n\nHow to use\n----------\n\nYou can find more examples here: https://github.com/MahjongRepository/mahjong/blob/master/doc/examples.py\n\nLet's calculate how much will cost this hand:\n\n.. image:: https://user-images.githubusercontent.com/475367/30796350-3d30431a-a204-11e7-99e5-aab144c82f97.png\n\n\nTanyao hand by ron\n^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n from mahjong.hand_calculating.hand import HandCalculator\n from mahjong.tile import TilesConverter\n from mahjong.hand_calculating.hand_config import HandConfig\n from mahjong.meld import Meld\n\n calculator = HandCalculator()\n\n # we had to use all 14 tiles in that array\n tiles = TilesConverter.string_to_136_array(man='22444', pin='333567', sou='444')\n win_tile = TilesConverter.string_to_136_array(sou='4')[0]\n\n result = calculator.estimate_hand_value(tiles, win_tile)\n\n print(result.han, result.fu)\n print(result.cost['main'])\n print(result.yaku)\n for fu_item in result.fu_details:\n print(fu_item)\n\nOutput:\n\n::\n\n 1 40\n 1300\n [Tanyao]\n {'fu': 30, 'reason': 'base'}\n {'fu': 4, 'reason': 'closed_pon'}\n {'fu': 4, 'reason': 'closed_pon'}\n {'fu': 2, 'reason': 'open_pon'}\n\n\nHow about tsumo?\n^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n result = calculator.estimate_hand_value(tiles, win_tile, config=HandConfig(is_tsumo=True))\n\n print(result.han, result.fu)\n print(result.cost['main'], result.cost['additional'])\n print(result.yaku)\n for fu_item in result.fu_details:\n print(fu_item)\n\nOutput:\n\n::\n\n 4 40\n 4000 2000\n [Menzen Tsumo, Tanyao, San Ankou]\n {'fu': 20, 'reason': 'base'}\n {'fu': 4, 'reason': 'closed_pon'}\n {'fu': 4, 'reason': 'closed_pon'}\n {'fu': 4, 'reason': 'closed_pon'}\n {'fu': 2, 'reason': 'tsumo'}\n\n\nWhat if we add open set?\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n.. code-block:: python\n\n melds = [Meld(meld_type=Meld.PON, tiles=TilesConverter.string_to_136_array(man='444'))]\n\n result = calculator.estimate_hand_value(tiles, win_tile, melds=melds, config=HandConfig(options=OptionalRules(has_open_tanyao=True)))\n\n print(result.han, result.fu)\n print(result.cost['main'])\n print(result.yaku)\n for fu_item in result.fu_details:\n print(fu_item)\n\nOutput:\n\n::\n\n 1 30\n 1000\n [Tanyao]\n {'fu': 20, 'reason': 'base'}\n {'fu': 4, 'reason': 'closed_pon'}\n {'fu': 2, 'reason': 'open_pon'}\n {'fu': 2, 'reason': 'open_pon'}\n\n\nShanten calculation\n===================\n\n.. code-block:: python\n\n from mahjong.shanten import Shanten\n\n shanten = Shanten()\n tiles = TilesConverter.string_to_34_array(man='13569', pin='123459', sou='443')\n result = shanten.calculate_shanten(tiles)\n\n print(result)\n\n\nReleases History\n================\n\n1.1.9 (2019-07-29)\n------------------\n- Add `TilesConverter.one_line_string_to_136_array()` and `TilesConverter.one_line_string_to_34_array()` methods\n\n1.1.8 (2019-07-25)\n------------------\n- Fix an issue with incorrect daburu chuuren poutou calculations\n- Allow passing '0' as a red five to tiles converter\n\n\n1.1.7 (2019-04-09)\n------------------\n- Introduce OptionalRules hand configuration\n\n1.1.6 (2019-02-10)\n------------------\n- Fix a bug when hatsu yaku was added to the hand instead of chun\n- Fix a bug where kokushi wasn't combined with tenhou/renhou/chihou\n- Add English names to all yaku\n- Add support of python 2.7\n- Add a way to pass aka dora to tile converter\n\n1.1.5 (2018-09-04)\n------------------\n\n- Allow to disable chiitoitsu or kokushi in shanten calculator\n\n1.1.4 (2018-08-31)\n------------------\n\n- Add is_terminal() and is_dora_indicator_for_terminal() functions to the utils.py\n\n1.1.3 (2018-08-22)\n------------------\n\n- Add is_tile_strictly_isolated() function to the utils.py\n\n1.1.2 (2017-10-14)\n------------------\n\n- Add settings for different kazoe yakuman calculation (it kan be an yakuman or a sanbaiman)\n- Support up to sextuple yakuman scores\n- Support kiriage mangan\n- Allow to disable +2 fu in open hand\n- Allow to disable tsumo pinfu (add 2 additional fu for hand like that)\n\n1.1.1 (2017-10-07)\n------------------\n\n- Fix a bug with not correct agari state determination and closed kan in the hand\n\n1.1.0 (2017-10-07)\n------------------\n\nBreaking changes:\n\n- Interface of hand calculator was changed. New interface will allow to easy support different game rules\n\nAdditional fixes:\n\n- Refactor hand divider. Allow to pass melds objects instead of arrays\n- Add file with usage examples\n- Minor project refactoring\n\n\n1.0.5 (2017-09-25)\n------------------\n\n- Improve installation script\n\n\n1.0.4 (2017-09-25)\n------------------\n\nBug fixes:\n\n- Fix refactoring regressions with kan sets and dora calculations\n- Fix regression with sankantsu\\suukantsu and called chankan\n- Closed kan can't be used in chuuren poutou\n- Fix yaku ids (some of them had incorrect numbers)\n\nFeatures:\n\n- Allow to disable double yakuman (like suuanko tanki)\n- Remove float calculations from scores and fu\n- Add travis build status\n- Add usage examples to the readme\n\n\n1.0.3 (2017-09-23)\n------------------\n\n- Hand calculation code was moved from mahjong bot package https://github.com/MahjongRepository/tenhou-python-bot\n- This library can calculate hand cost (han, fu with details, yaku and scores) for riichi mahjong (japanese version)\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/MahjongRepository/mahjong", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "mahjong", "package_url": "https://pypi.org/project/mahjong/", "platform": "", "project_url": "https://pypi.org/project/mahjong/", "project_urls": { "Homepage": "https://github.com/MahjongRepository/mahjong" }, "release_url": "https://pypi.org/project/mahjong/1.1.9/", "requires_dist": null, "requires_python": "", "summary": "Mahjong hands calculation", "version": "1.1.9" }, "last_serial": 5597306, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "a2fdc81375af373d24b6b6e10a316c36", "sha256": "2de0d938132dfd8e9f9389f9bb02f73fb5a0860b7d4545105e1d1c2b808f4216" }, "downloads": -1, "filename": "mahjong-1.0.1.tar.gz", "has_sig": false, "md5_digest": "a2fdc81375af373d24b6b6e10a316c36", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6434, "upload_time": "2017-09-20T11:22:47", "url": "https://files.pythonhosted.org/packages/ff/ec/0d567c9474b74d531971445239b46f93a735ada0a4b19415db544ef721ab/mahjong-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "7cce637aefbcd6bed2a7ee5dc294da1b", "sha256": "74b2b2be4c1feb31ce0a08bc8031695b9175b9ff713ea9e607e26f75b4f348ef" }, "downloads": -1, "filename": "mahjong-1.0.2.tar.gz", "has_sig": false, "md5_digest": "7cce637aefbcd6bed2a7ee5dc294da1b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19576, "upload_time": "2017-09-20T14:07:17", "url": "https://files.pythonhosted.org/packages/d7/ba/56b830f8dfcc4d0c60de67e615a7b347e1187f36abfeea9bdd7f81ce8631/mahjong-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "170c9ae2d0ccbb29386e66b80cee540e", "sha256": "c92a23b4d53daf13ecaa53f1a8b3efd2302dbbc4dde5fdb1e85b145398cca11c" }, "downloads": -1, "filename": "mahjong-1.0.3.tar.gz", "has_sig": false, "md5_digest": "170c9ae2d0ccbb29386e66b80cee540e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19650, "upload_time": "2017-09-23T02:59:29", "url": "https://files.pythonhosted.org/packages/3a/c6/703d712fe11bab845e8e1a7e746fc71b049cb62bee6764aea4064392c58d/mahjong-1.0.3.tar.gz" } ], "1.0.5": [ { "comment_text": "", "digests": { "md5": "d69b572b589577e20e9fcf175c0094e1", "sha256": "ab7e08417850147c6a5192618853d16ccf2f2d53b1191c6ccf2d0a5800e06eea" }, "downloads": -1, "filename": "mahjong-1.0.5.tar.gz", "has_sig": false, "md5_digest": "d69b572b589577e20e9fcf175c0094e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21398, "upload_time": "2017-09-25T09:07:13", "url": "https://files.pythonhosted.org/packages/38/d1/219529827fed6e8b392f036cb083f83ef99e8d473b327c04e17f85d15f2f/mahjong-1.0.5.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "acd865816d1bd42963ad4b7164f5c84f", "sha256": "0f723d4721928f41214222e46cbd616b43cf0a0c76c3a2e016e864d07b5b7325" }, "downloads": -1, "filename": "mahjong-1.1.0.tar.gz", "has_sig": false, "md5_digest": "acd865816d1bd42963ad4b7164f5c84f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22579, "upload_time": "2017-10-07T11:13:33", "url": "https://files.pythonhosted.org/packages/1c/6f/6024a4bd79abb9aba1164b621bf0d6041202227b200dace8a584f8c958ac/mahjong-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "62cf4455d8d8143c13b4c86ffc6d59d6", "sha256": "9a1389c1b47ea33076dcb6dddde486013862eb5e27859648ba72fe2b599b5bf2" }, "downloads": -1, "filename": "mahjong-1.1.1.tar.gz", "has_sig": false, "md5_digest": "62cf4455d8d8143c13b4c86ffc6d59d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22633, "upload_time": "2017-10-07T11:36:45", "url": "https://files.pythonhosted.org/packages/55/ce/bd186b075bb9f8036bae594c84b2ef60fef1ef4130e3eeed8ce26d96e71c/mahjong-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "6bfc1867042ff1fc6da1148baaee7ae3", "sha256": "3f911472a7e3825b2fd602007c7af7ecd88ac6972189dc541a5273bf7fd7deb0" }, "downloads": -1, "filename": "mahjong-1.1.2.tar.gz", "has_sig": false, "md5_digest": "6bfc1867042ff1fc6da1148baaee7ae3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 23229, "upload_time": "2017-10-14T17:52:45", "url": "https://files.pythonhosted.org/packages/cb/b1/559ba6ee8ce6e1809e05e37fdb81ef61a417f5a7b254d664180b9ccdddd6/mahjong-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "5786870d443b0797802d666e691ad0bb", "sha256": "5cb5fb2e7aeb19e5a74329f6035fecadd9d0ed829ef8fa1f6e7c88b7a250ecaf" }, "downloads": -1, "filename": "mahjong-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "5786870d443b0797802d666e691ad0bb", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 54639, "upload_time": "2018-08-22T10:32:20", "url": "https://files.pythonhosted.org/packages/0c/3b/8fcc91179d0e6d797b5d6dec5440a5cc23b940fef7b1eff4c8ebcd1ab3fd/mahjong-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9d31a7cfa7efb2d1ed52468ecee5225c", "sha256": "40fdc9800a6a726b23fa31850faf72c4d9e0fe018b9477fd1be5154d57891cb9" }, "downloads": -1, "filename": "mahjong-1.1.3.tar.gz", "has_sig": false, "md5_digest": "9d31a7cfa7efb2d1ed52468ecee5225c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26113, "upload_time": "2018-08-22T10:32:22", "url": "https://files.pythonhosted.org/packages/52/bc/5504aba11faae892098a31d4cdcb31b63ac458302a5bc9f119a69e7bf501/mahjong-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "0ea918e806cb16268b1d982d8a108310", "sha256": "6fad963498e48efd52a171ede6c49ba28639cacbb8dcbedefff835f5cb597102" }, "downloads": -1, "filename": "mahjong-1.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0ea918e806cb16268b1d982d8a108310", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 54738, "upload_time": "2018-08-31T01:54:06", "url": "https://files.pythonhosted.org/packages/33/eb/90da5871787d6876f7e68b5dbe7d68214b4fb14a694a625e4de57cfc416c/mahjong-1.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5053f3d9dc811e9955609a9085e54bed", "sha256": "76c6f6003b87add623912e7f67f7055f80ecead28d1ba823fb11dadae6b299f4" }, "downloads": -1, "filename": "mahjong-1.1.4.tar.gz", "has_sig": false, "md5_digest": "5053f3d9dc811e9955609a9085e54bed", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26216, "upload_time": "2018-08-31T01:54:08", "url": "https://files.pythonhosted.org/packages/b4/90/6e01d5af39fe6ebbbb084f9bccbe3c908748d882c9ba544eb56d6c8c9791/mahjong-1.1.4.tar.gz" } ], "1.1.5": [ { "comment_text": "", "digests": { "md5": "ba769b3e95723e1f53f129df618a00c7", "sha256": "2842cb57a13f99556963feccd3e4abbd2569fa2be395f1a960233b5b8d1ddaba" }, "downloads": -1, "filename": "mahjong-1.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "ba769b3e95723e1f53f129df618a00c7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 54848, "upload_time": "2018-09-05T00:26:23", "url": "https://files.pythonhosted.org/packages/7c/e1/7b5cef32cf8b4cada3cdfe744888bc3473a5232f76ebd48ec71f47533285/mahjong-1.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8cfef54d2db4a0862c144cb4d671a2b0", "sha256": "ec62e3c45b049fc7b015b5a9e495741bf8105918bbc2bdcbbfd5a53212f77fe2" }, "downloads": -1, "filename": "mahjong-1.1.5.tar.gz", "has_sig": false, "md5_digest": "8cfef54d2db4a0862c144cb4d671a2b0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26325, "upload_time": "2018-09-05T00:26:24", "url": "https://files.pythonhosted.org/packages/41/af/e0e9730da135066c00fff61f728bef48b38a0ecd13610ca5641deadcf973/mahjong-1.1.5.tar.gz" } ], "1.1.6": [ { "comment_text": "", "digests": { "md5": "d66ddc52c43555072dbf856c2b977c47", "sha256": "ad19429b4135b60aa98eb105c6d8b5fd20e549563a583bfba4369cac8ab6b40f" }, "downloads": -1, "filename": "mahjong-1.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "d66ddc52c43555072dbf856c2b977c47", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 56325, "upload_time": "2019-02-11T01:58:31", "url": "https://files.pythonhosted.org/packages/06/d3/bac518e0e2135cd13559b247d2b092128df34aac46c4324e2dc4900aab57/mahjong-1.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e624278fa8284819a0b670f332581f27", "sha256": "e50ea342fe2bf2b5400cc9b81cee5e544ad2919d5588bca5ce4f94485f87bcd7" }, "downloads": -1, "filename": "mahjong-1.1.6.tar.gz", "has_sig": false, "md5_digest": "e624278fa8284819a0b670f332581f27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27325, "upload_time": "2019-02-11T01:58:34", "url": "https://files.pythonhosted.org/packages/70/a7/d3d7f20574be3a273f4c9ad3a9573b1309a7a7f645a4eb2970f9a8a8d178/mahjong-1.1.6.tar.gz" } ], "1.1.7": [ { "comment_text": "", "digests": { "md5": "d5ece1f4d38a0cc4b506e0159cf990b2", "sha256": "f6fd2823ed49a119737366e34b6f78fdc41e5a10c4dc7082ce9b1d547ee60c26" }, "downloads": -1, "filename": "mahjong-1.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "d5ece1f4d38a0cc4b506e0159cf990b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61456, "upload_time": "2019-04-08T16:45:34", "url": "https://files.pythonhosted.org/packages/47/21/e03c1bb7092adf506120043380e6c431c76ebff396c28482721b2fff895e/mahjong-1.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "91d120a560831c526113de9c9f233677", "sha256": "cf4dad8437452c9212edc5be647c48675474e097472d379456fa197413b7941f" }, "downloads": -1, "filename": "mahjong-1.1.7.tar.gz", "has_sig": false, "md5_digest": "91d120a560831c526113de9c9f233677", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27516, "upload_time": "2019-04-08T16:45:37", "url": "https://files.pythonhosted.org/packages/20/8f/193e15832e6eda36ff95356acd79e97655b36c86f6a863da47d1a1c3edcc/mahjong-1.1.7.tar.gz" } ], "1.1.8": [ { "comment_text": "", "digests": { "md5": "fa6bd948df788ae1d91fd14512ba5c52", "sha256": "575845f1fc1b8b2ed8925e2f41cb175e17a94f5d30bcffb49211080e95ab7827" }, "downloads": -1, "filename": "mahjong-1.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "fa6bd948df788ae1d91fd14512ba5c52", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60938, "upload_time": "2019-07-26T02:06:56", "url": "https://files.pythonhosted.org/packages/4d/30/b08c9a39b783056983d53eb1a86f2e51081d9a8d9e9216c15929067a35dc/mahjong-1.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4904ee3f17743f7dbd61e3389aa59edc", "sha256": "731c6832344a0cb728f53373fa5a48491919e66ba5d9153e46bc71590a1d250d" }, "downloads": -1, "filename": "mahjong-1.1.8.tar.gz", "has_sig": false, "md5_digest": "4904ee3f17743f7dbd61e3389aa59edc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29383, "upload_time": "2019-07-26T02:06:59", "url": "https://files.pythonhosted.org/packages/6e/bc/b8bf854e52e7a46d1da01386a7df7e8ab6c3f52782291aed068f5055cf9b/mahjong-1.1.8.tar.gz" } ], "1.1.9": [ { "comment_text": "", "digests": { "md5": "28cb5510c1295a295cf9d751fa9ee296", "sha256": "f1acc366fa201afe26a3c5c3eebb67f33eb97f9b0b5abf5ffe2b9a3eb100e592" }, "downloads": -1, "filename": "mahjong-1.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "28cb5510c1295a295cf9d751fa9ee296", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61244, "upload_time": "2019-07-29T01:42:01", "url": "https://files.pythonhosted.org/packages/34/30/dc3bc40d4d237431a243289157dea26751a1dec2659fe13947970262ff2a/mahjong-1.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd18b3e3982e45c37f19b661fbe66ab6", "sha256": "af3be912f7070a7d28d65f526dc3f1f550117f27f6046a583503a78f11647a8d" }, "downloads": -1, "filename": "mahjong-1.1.9.tar.gz", "has_sig": false, "md5_digest": "dd18b3e3982e45c37f19b661fbe66ab6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29686, "upload_time": "2019-07-29T01:42:04", "url": "https://files.pythonhosted.org/packages/db/d5/0dc614053ef82cf37828eb896d08e1698a1181c5cbdcee8e6ea280dafa40/mahjong-1.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "28cb5510c1295a295cf9d751fa9ee296", "sha256": "f1acc366fa201afe26a3c5c3eebb67f33eb97f9b0b5abf5ffe2b9a3eb100e592" }, "downloads": -1, "filename": "mahjong-1.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "28cb5510c1295a295cf9d751fa9ee296", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61244, "upload_time": "2019-07-29T01:42:01", "url": "https://files.pythonhosted.org/packages/34/30/dc3bc40d4d237431a243289157dea26751a1dec2659fe13947970262ff2a/mahjong-1.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dd18b3e3982e45c37f19b661fbe66ab6", "sha256": "af3be912f7070a7d28d65f526dc3f1f550117f27f6046a583503a78f11647a8d" }, "downloads": -1, "filename": "mahjong-1.1.9.tar.gz", "has_sig": false, "md5_digest": "dd18b3e3982e45c37f19b661fbe66ab6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29686, "upload_time": "2019-07-29T01:42:04", "url": "https://files.pythonhosted.org/packages/db/d5/0dc614053ef82cf37828eb896d08e1698a1181c5cbdcee8e6ea280dafa40/mahjong-1.1.9.tar.gz" } ] }