{ "info": { "author": "Igor Zyktin", "author_email": "nicord@yandex.ru", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# Recursion tree\nTransforms recursive functions into graphical form.\n\nInstallation:\n```\npip install RecursionTree\n``` \n\nUsage:\n```python\nimport random\nfrom RecursionTree import recursion_tree\n\nscientific_style = {\n 'draw_boundary': False,\n 'color_background': 'white',\n 'color_num_background': 'white',\n 'color_node_body': 'white',\n 'color_node_stroke': 'black',\n 'color_text': 'black',\n 'color_connection': 'black',\n 'node_stroke_bezier': False\n}\n\n\n@recursion_tree(scientific_style)\ndef fibo(x: int) -> int:\n return 1 if x in [1, 2] else fibo(x=x - 1) + fibo(x=x - 2)\n\n# No parameters mean default settings\n@recursion_tree\ndef random_tree(x: int) -> str:\n if x == 0:\n return 'Dead end'\n\n for _ in range(random.randint(1, x)):\n random_tree(x=x - 1)\n\nif __name__ == '__main__':\n # Run out target function and save results\n fibo(x=5)\n random_tree(x=4)\n```\nJust add the 'recursion_tree' decorator to any recursive function.\nThe result will be automatically saved as an SVG file.\nAdditional settings might be achieved via settings.py \nor by passing a dictionary to the decorator.\n\nDefault style:\n\n![demo1](https://github.com/IgorZyktin/recursion_tree/blob/master/demo_default.png \"Default style\")\n\nScientific style:\n\n![demo1](https://github.com/IgorZyktin/recursion_tree/blob/master/demo_scientific.png \"Scientific style\")\n\nDefault style with boundaries:\n\n![demo1](https://github.com/IgorZyktin/recursion_tree/blob/master/demo_boundary.png \"Default style\")\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/IgorZyktin/recursion_tree", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "RecursionTree", "package_url": "https://pypi.org/project/RecursionTree/", "platform": "", "project_url": "https://pypi.org/project/RecursionTree/", "project_urls": { "Homepage": "https://github.com/IgorZyktin/recursion_tree" }, "release_url": "https://pypi.org/project/RecursionTree/2.0/", "requires_dist": null, "requires_python": "", "summary": "Builds recursive calls tree and saves it as an SVG file.", "version": "2.0" }, "last_serial": 5285364, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "b8c0177a8601846499a905953bda5012", "sha256": "8ae812786139c4be5669d20b994007fd7f6d391e9d78653b1ffc4036b92866b0" }, "downloads": -1, "filename": "recursiontree-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b8c0177a8601846499a905953bda5012", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2279, "upload_time": "2019-01-02T10:45:40", "url": "https://files.pythonhosted.org/packages/5d/b2/66651bea90ec9b44de462462acdb54d5e9ab806b13a154c2c176a77363f9/recursiontree-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d582ddbca5f1bde45f68b38093606c0d", "sha256": "54a58e152f502e72f29a59a9fdade1243de1dc55b904b7fc7c7b3572de857a3f" }, "downloads": -1, "filename": "RecursionTree-1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d582ddbca5f1bde45f68b38093606c0d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 2494, "upload_time": "2019-01-02T10:57:41", "url": "https://files.pythonhosted.org/packages/a6/24/90bfe01976c49d9516140e0a57323f73e084e71983a09ac16af8e7e4e2ea/RecursionTree-1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf40150033554b3a01148c42b9950b84", "sha256": "688fb52fe3297d5b56fcbafca7eacfafa90b54501a9d0f17a63688ab4591dd74" }, "downloads": -1, "filename": "recursiontree-1.0.tar.gz", "has_sig": false, "md5_digest": "bf40150033554b3a01148c42b9950b84", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1286, "upload_time": "2019-01-02T10:45:42", "url": "https://files.pythonhosted.org/packages/fd/1d/02b7432d33214e8ce1153ac0e2df7ad55192ce1001763348d236d79c4082/recursiontree-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "0bbafca0fd10083e1ad095abd099c1b0", "sha256": "4861b80806ef3ae647124ac925cb7c5241f27c8957f29b68bbc23a1ce9434378" }, "downloads": -1, "filename": "RecursionTree-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0bbafca0fd10083e1ad095abd099c1b0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 8713, "upload_time": "2019-01-02T11:10:49", "url": "https://files.pythonhosted.org/packages/87/c7/e64696cbff1c7e6244bdadfebe42daacfb9a99be925946caebcb353ba8fd/RecursionTree-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ae6e6997a6011aa4f95d4e0d50a6554", "sha256": "a22eb6621f7aa5e2ff47bd55dd8670f4edd21d46240661ac365c81b863831509" }, "downloads": -1, "filename": "RecursionTree-1.1.tar.gz", "has_sig": false, "md5_digest": "8ae6e6997a6011aa4f95d4e0d50a6554", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5793, "upload_time": "2019-01-02T11:10:51", "url": "https://files.pythonhosted.org/packages/e7/d8/4b3880dc5faa3ea23f3ea44706f42287c4af5371974aac09516ad9ca4b86/RecursionTree-1.1.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "d31dca2da14e4abc0c1130a9d86c4912", "sha256": "49b2209972d87178417d37581b19701f44a08266ea57b892b0c21a0017cac96f" }, "downloads": -1, "filename": "RecursionTree-1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d31dca2da14e4abc0c1130a9d86c4912", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 28287, "upload_time": "2019-01-02T11:46:43", "url": "https://files.pythonhosted.org/packages/f9/1c/6a45ed2669799e156366efc9ba47bd76d62ddc83432b1d2e5cde30426469/RecursionTree-1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "845a654e8195f65d684b5f30d2b94855", "sha256": "259a414e2ea43b6fc247b0b894f593fab304a84ff1a1aab8607aa9abd871b3c4" }, "downloads": -1, "filename": "RecursionTree-1.3.tar.gz", "has_sig": false, "md5_digest": "845a654e8195f65d684b5f30d2b94855", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26640, "upload_time": "2019-01-02T11:46:45", "url": "https://files.pythonhosted.org/packages/c8/c0/067534501fccdab4ecdc623e285b6317d4aeacc1045aee2d383d2c7757ed/RecursionTree-1.3.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "0e4afe873461e8f71c578cca8a3493a4", "sha256": "686a6f60ce9a7673d4b102430132738df8f8d4717dedf83a2f27990562f688f5" }, "downloads": -1, "filename": "RecursionTree-1.5-py3.7.egg", "has_sig": false, "md5_digest": "0e4afe873461e8f71c578cca8a3493a4", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 36200, "upload_time": "2019-01-02T15:04:35", "url": "https://files.pythonhosted.org/packages/f7/17/df27e9ea8eceac4c29f5076046859d5103290781f0fb1d598ec721d9578b/RecursionTree-1.5-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "70fcdcd6dffa96deeb20529a6ee68d24", "sha256": "a388a92a42570fdd1d7e362ae57bd0ee546db78af5e477f2b4c67356ab0c0ebe" }, "downloads": -1, "filename": "RecursionTree-1.5.tar.gz", "has_sig": false, "md5_digest": "70fcdcd6dffa96deeb20529a6ee68d24", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26759, "upload_time": "2019-01-02T15:04:37", "url": "https://files.pythonhosted.org/packages/dd/37/b33f90a75ff6201f42ced9fc5ea8cf923af44e0e3044952832c6a5ba2e82/RecursionTree-1.5.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "fbd1573c23b855e58420c24ee5561681", "sha256": "70b766557cde68de48669a2792b27b0595fa5133aa9d25585aa0096e9def72fb" }, "downloads": -1, "filename": "RecursionTree-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fbd1573c23b855e58420c24ee5561681", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29226, "upload_time": "2019-05-18T09:32:43", "url": "https://files.pythonhosted.org/packages/2e/75/340dcebe075c9a66757fd62ee76ff7308b18a6d52b75ada6b638168e0f27/RecursionTree-2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1775536fda6c09742fa04efc44ee7547", "sha256": "3637dcf25ccd5977aa7868833f5ec8ebda5dd0546d5d48f77e104ad7eb73d63a" }, "downloads": -1, "filename": "RecursionTree-2.0.tar.gz", "has_sig": false, "md5_digest": "1775536fda6c09742fa04efc44ee7547", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6820, "upload_time": "2019-05-18T09:32:45", "url": "https://files.pythonhosted.org/packages/85/88/e2ce66e0e7568771681c9fb21059c9aeb925ce0de96cd562f40d65bedfd3/RecursionTree-2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "fbd1573c23b855e58420c24ee5561681", "sha256": "70b766557cde68de48669a2792b27b0595fa5133aa9d25585aa0096e9def72fb" }, "downloads": -1, "filename": "RecursionTree-2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "fbd1573c23b855e58420c24ee5561681", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 29226, "upload_time": "2019-05-18T09:32:43", "url": "https://files.pythonhosted.org/packages/2e/75/340dcebe075c9a66757fd62ee76ff7308b18a6d52b75ada6b638168e0f27/RecursionTree-2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1775536fda6c09742fa04efc44ee7547", "sha256": "3637dcf25ccd5977aa7868833f5ec8ebda5dd0546d5d48f77e104ad7eb73d63a" }, "downloads": -1, "filename": "RecursionTree-2.0.tar.gz", "has_sig": false, "md5_digest": "1775536fda6c09742fa04efc44ee7547", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6820, "upload_time": "2019-05-18T09:32:45", "url": "https://files.pythonhosted.org/packages/85/88/e2ce66e0e7568771681c9fb21059c9aeb925ce0de96cd562f40d65bedfd3/RecursionTree-2.0.tar.gz" } ] }