{ "info": { "author": "scpketer", "author_email": "scpketer3@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: User Interfaces" ], "description": "# istages\n[![PyPI](https://img.shields.io/pypi/v/istages?style=plastic)](https://pypi.org/project/istages/)\n[![GitHub Release Date](https://img.shields.io/github/release-date/scpketer/istages?style=plastic)](https://github.com/scpketer/istages/releases/latest)\n\nLightweight and effective CLI user interaction Python library.\n\n# Installation\n## Install from PyPI\nQuick install [latest version](https://github.com/scpketer/istages/releases/latest):\n```bash\n$ pip install istages\n```\n\nFor specific versions refer to [Releases page](https://github.com/scpketer/istages/releases).\n\n## Building from source\nClone repository:\n```bash\n$ git clone https://github.com/scpketer/istages\n```\n\nMove to repository directory:\n```bash\n$ cd istages\n```\n\nRun installation:\n```bash\n$ make install\n```\n\n# Usage\nCreate some prompt stages:\n\n```python\nfrom istages.stage import InteractiveStage\n\nclass NicknameStage(InteractiveStage):\n def prompt(self):\n # This will be the text displayed when user is asked for input\n return 'Enter your nickname'\n\n def default(self):\n # This will be the default value provided in\n # case user did not provide any input\n return None\n\n def prompt_format(self):\n # This method is optional\n # You can define custom prompt format for this stage\n # Substitutions:\n # prompt - prompt of this stage\n # default - default value of this stage\n return '{prompt} [{default!r}]: '\n\n def process(self, value, stage_results):\n # In this method you can process input given by user\n # Note - you should return instance of StageResult, not just your value\n # Returned instance of StageResult also defines next stage\n from istages.result import ResultValueReturned as Value\n return Value(value)\n\nclass EmailStage(InteractiveStage):\n def prompt(self):\n return 'Enter your e-mail'\n\n def default(self):\n return None\n\n def prompt_format(self):\n return '{prompt} [{default!r}]: '\n\n def process(self, value, stage_results):\n from istages.result import ResultValueReturned as Value\n # Aside of returning value, you define next stage here\n return Value(value, NicknameStage())\n```\n\nOnce you've done defining stages, create an instance of `StageWalker`:\n```python\n# Import StageWalker and initialize it\nfrom istages.stage import StageWalker\nsw = StageWalker()\n\n# Start StageWalker with EmailStage\nsw.enter(EmailStage())\n```\n\nYou can refer to results of the stages:\n```python\n# Retrieve results map\n# Structure is `Class[InteractiveStage] -> List[StageResult]`\n# For each stage of Class[InteractiveStage],\n# input is appended to List[StageResult].\n# Note - even if stage was used only once,\n# its result will be still contained in a list\nresults = sw.stage_results\nemail = results[EmailStage][0]\nnickname = results[NicknameStage][0]\n```\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/scpketer/istages", "keywords": "ui cli interaction stage prompt", "license": "", "maintainer": "", "maintainer_email": "", "name": "istages", "package_url": "https://pypi.org/project/istages/", "platform": "", "project_url": "https://pypi.org/project/istages/", "project_urls": { "Homepage": "https://github.com/scpketer/istages", "PyPI Project Page": "https://pypi.org/project/istages/", "Source": "https://github.com/scpketer/istages" }, "release_url": "https://pypi.org/project/istages/1.2.1/", "requires_dist": [ "stdiomask (<1,>=0.0.3)" ], "requires_python": ">=2.7, <4", "summary": "Lightweight and effective CLI user interaction Python library", "version": "1.2.1" }, "last_serial": 5708774, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "73fcfe0bea4b0b586554babb18ff7fc0", "sha256": "34c654852ba1d44f584041bde27db4eca71baa6c08edea6bb496c0f3295bd68f" }, "downloads": -1, "filename": "istages-1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "73fcfe0bea4b0b586554babb18ff7fc0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, <4", "size": 3998, "upload_time": "2019-08-18T11:46:42", "url": "https://files.pythonhosted.org/packages/0e/7e/79bc30245ecaef546a30f5928db2ed10c16efa563b6c57fb625431938b32/istages-1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "02ce702046178fbabd57546959dcadd6", "sha256": "9d5a18cded03ebf275e1d6cfbff20e6dcf3a1213f821e85b07d5d12629dc011f" }, "downloads": -1, "filename": "istages-1.1.tar.gz", "has_sig": false, "md5_digest": "02ce702046178fbabd57546959dcadd6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, <4", "size": 2616, "upload_time": "2019-08-18T11:46:44", "url": "https://files.pythonhosted.org/packages/77/9a/34432225f0870940bc421e446b4870ab47e26acfe6cbf26affe2ef20c577/istages-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "4e149136ead5df4dbf0074de5366ed3f", "sha256": "e53d2d73b613cb4918b10796ea6495442b294b1e716c9b123fe6c1faa3e1c32d" }, "downloads": -1, "filename": "istages-1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4e149136ead5df4dbf0074de5366ed3f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, <4", "size": 4363, "upload_time": "2019-08-19T06:04:57", "url": "https://files.pythonhosted.org/packages/ff/dd/07e2d22629e1fa9cc07a31e9ab96ae821b91d2834a47ff0c1d51d22bf6a8/istages-1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf3e38f4e729017125acff55c7aa24eb", "sha256": "61a5968dfb63c440f67f5c64e7b24da6ee41e1b0d17cc3126ba52c56e37ff4f9" }, "downloads": -1, "filename": "istages-1.2.tar.gz", "has_sig": false, "md5_digest": "cf3e38f4e729017125acff55c7aa24eb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, <4", "size": 3264, "upload_time": "2019-08-19T06:04:59", "url": "https://files.pythonhosted.org/packages/10/f3/9b79f4832a4ffc03d60503a959443e6b2bd0a8fa293967b831452af20cbc/istages-1.2.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "68a733e8186cd558b895da4296d38596", "sha256": "a5bb3b700803c686a30cb6317782de9afac1135b3148940a7e558e6a07670725" }, "downloads": -1, "filename": "istages-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "68a733e8186cd558b895da4296d38596", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, <4", "size": 4421, "upload_time": "2019-08-21T11:30:59", "url": "https://files.pythonhosted.org/packages/93/0f/831e44e8bbc5b189850a61aea38fff406ca807e5ccf10e84fe068d1275f2/istages-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e066078057fb8ac30e208a0c566a768", "sha256": "ea8247ebeb99662ccac18fff18398995ca76a1f28c7e894425eea9d5157fc009" }, "downloads": -1, "filename": "istages-1.2.1.tar.gz", "has_sig": false, "md5_digest": "0e066078057fb8ac30e208a0c566a768", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, <4", "size": 3292, "upload_time": "2019-08-21T11:31:00", "url": "https://files.pythonhosted.org/packages/d6/09/c3342e6406e4074b1d5f4f690300ecac6c2d0630edb930ef843838bd2465/istages-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "68a733e8186cd558b895da4296d38596", "sha256": "a5bb3b700803c686a30cb6317782de9afac1135b3148940a7e558e6a07670725" }, "downloads": -1, "filename": "istages-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "68a733e8186cd558b895da4296d38596", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=2.7, <4", "size": 4421, "upload_time": "2019-08-21T11:30:59", "url": "https://files.pythonhosted.org/packages/93/0f/831e44e8bbc5b189850a61aea38fff406ca807e5ccf10e84fe068d1275f2/istages-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e066078057fb8ac30e208a0c566a768", "sha256": "ea8247ebeb99662ccac18fff18398995ca76a1f28c7e894425eea9d5157fc009" }, "downloads": -1, "filename": "istages-1.2.1.tar.gz", "has_sig": false, "md5_digest": "0e066078057fb8ac30e208a0c566a768", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.7, <4", "size": 3292, "upload_time": "2019-08-21T11:31:00", "url": "https://files.pythonhosted.org/packages/d6/09/c3342e6406e4074b1d5f4f690300ecac6c2d0630edb930ef843838bd2465/istages-1.2.1.tar.gz" } ] }