{ "info": { "author": "Max Persson", "author_email": "max@looplab.se", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Software Development :: User Interfaces" ], "description": "Introduction\n============\nSkal is a wrapper for the argparser library to make it easier to write\napplications that uses commands with subcommands, much like git and\nheroku does.\n\nSkal can be used with different combinations of command sources; a subclass of\nSkalApp, any number of modules and any number of packages. Currently usage with\nclasses and modules are supported.\n\nThe test cases are a good source of different ways to use Skal appart\nfrom what is described here.\n\nSubclass as command source\n==========================\nA custom subclass of SkalApp is one way to get some commands added, and\nmay be the shortest version.\n\nIn file myapp.py:\n```python\nfrom skal import SkalApp, command\n\nclass MyApp(SkalApp):\n @command\n def hello(self):\n print('hello')\n\n @command\n def yes(self):\n print('yes')\n\nif __name__ == '__main__':\n MyApp().run()\n```\n\nRunning the program:\n```\n> python myapp.py hello\nhello\n\n> python myapp.py yes\nyes\n```\n\nModules as command source\n=========================\nThere are two ways in which modules can be used to source commands;\neither as a flat hirearchy where every function in every module gets\nadded or with a bit of hirearchy where each module becomes a command and\nits functions becomes subcommands. Using either is determined by how the\nmodule names are passed to the SkalApp constructor, and any combination\nis also valid. The only advice is to specify a overridden version and\ndescription string for the whole app, as Skal wouldn't otherwise know\nwhere to get that information from. When using only modules there is no\nneed to override the SkalApp class.\n\nFirst a module called do.py:\n```python\nfrom skal import command\n\n@command\ndef hello(self):\n print('hello')\n\n@command\ndef yes(self):\n print('yes')\n```\n\nUsing do.py as plain commands in myapp.py:\n```\nfrom skal import SkalApp\n\nif __name__ == '__main__':\n SkalApp(command_modules = ['do']).run()\n```\n\nRunning the program:\n```\n> python myapp.py hello\nhello\n\n> python myapp.py yes\nyes\n```\n\nUsing do.py as a subcommand in myapp.py:\n```\nfrom skal import SkalApp\n\nif __name__ == '__main__':\n SkalApp(subcommand_modules = ['do']).run()\n```\n\nRunning the program:\n```\n> python myapp.py do hello\nhello\n\n> python myapp.py do yes\nyes\n```\n\nPer Command Arguments\n======================\nThis shows the usage of custom arguments per command. This works for all\nsupported command sources, not only classes.\n```python\nfrom skal import SkalApp, command, default\n\nclass MyApp(SkalApp):\n \"\"\"Help line for application\"\"\"\n\n __args__ = {\n '-a': {'help': 'Help for a', 'action': 'store_true'},\n '-b': {'help': 'Help for b', 'action': 'store_true'}\n }\n\n @command({\n ('-d', '--delete'): {'help': 'Help for d', 'action': 'store_true'}\n })\n def hello(self):\n \"\"\"Help line for hello\"\"\"\n if self.args.a:\n print('a')\n if self.args.b:\n print('b')\n if self.args.delete:\n print('deleting')\n print('hello')\n\n @command\n def yes(self):\n \"\"\"Help line for yes\"\"\"\n if self.args.a:\n print('a')\n if self.args.b:\n print('b')\n print('yes')\n\nif __name__ == '__main__':\n app = MyApp()\n sys.exit(app.run())\n```\n\nRunning it:\n```\n> python myapp.py -a hello --delete\na\ndeleting\nhello\n\n> python myapp.py -b yes\nb\nyes\n```\n\nLicense\n=======\nSkal is licensed under Apache License 2.0\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\n", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/looplab/skal", "keywords": null, "license": "Apache License 2.0", "maintainer": null, "maintainer_email": null, "name": "skal", "package_url": "https://pypi.org/project/skal/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/skal/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/looplab/skal" }, "release_url": "https://pypi.org/project/skal/0.1.13/", "requires_dist": null, "requires_python": null, "summary": "Class based command line wrapper", "version": "0.1.13" }, "last_serial": 738969, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "befd59b55258f76d41e4b7abda14a0a5", "sha256": "ff0cd8fcf6a0e29488669d7662f2ee3897d5ae50e6b8277292c3a30c234bd27d" }, "downloads": -1, "filename": "skal-0.0.1.tar.gz", "has_sig": false, "md5_digest": "befd59b55258f76d41e4b7abda14a0a5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6220, "upload_time": "2012-06-27T21:25:32", "url": "https://files.pythonhosted.org/packages/91/93/a81477b6795acf18db1e7df74c67cb85ae4b026410c9996f16eb44e69307/skal-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "c20939ea04ad9a334cc7bb97dcc0e60d", "sha256": "c3e26dc7438f3240f3dd6c50aacf2213fd153e30904b8d9a5632941ede0c1559" }, "downloads": -1, "filename": "skal-0.0.2.tar.gz", "has_sig": false, "md5_digest": "c20939ea04ad9a334cc7bb97dcc0e60d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6665, "upload_time": "2012-06-28T11:04:50", "url": "https://files.pythonhosted.org/packages/ab/d1/df08301c1f985d26069c8f196d050eddb8d782dd40fdf4a6bba4a130a513/skal-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "c175577b8d9621975ab1adbbdb681541", "sha256": "2dc76f6856405fded17ff87d426856952a4c94411cf98d110977295e11162d49" }, "downloads": -1, "filename": "skal-0.0.3.tar.gz", "has_sig": false, "md5_digest": "c175577b8d9621975ab1adbbdb681541", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7718, "upload_time": "2012-06-29T19:08:58", "url": "https://files.pythonhosted.org/packages/f4/cd/642d9797f41f123ad4e79a6958ce1511f9eae88810c218f4f1c5f6d35efe/skal-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "7a72edbbe90b03a87eb91972c36014e2", "sha256": "aa195161ad886b77ec2925a2def5e280ea4cd01fb2c7451ddda138a3425e8384" }, "downloads": -1, "filename": "skal-0.0.4.tar.gz", "has_sig": false, "md5_digest": "7a72edbbe90b03a87eb91972c36014e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7977, "upload_time": "2012-07-01T14:36:14", "url": "https://files.pythonhosted.org/packages/4e/98/c53ed3e2c712d6c00a64d355ad1e4efe1e04bb1d7b1e8ce01fc633dff7d1/skal-0.0.4.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "fcd80365b4609c8794db3f19354b46e1", "sha256": "fc2a7d4978c307bf428fdb752ef0be4eda25bad5d8236330931b6f149e054827" }, "downloads": -1, "filename": "skal-0.1.0.tar.gz", "has_sig": false, "md5_digest": "fcd80365b4609c8794db3f19354b46e1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8118, "upload_time": "2012-07-03T10:00:11", "url": "https://files.pythonhosted.org/packages/a1/be/1f84c5d394b776c42206d0119bf4a9bc0793bb20f14dce86a9b20f14dfbe/skal-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "52a39a842123ac7ba21eebd1e0b2b5eb", "sha256": "84bc09a48845f738e607a9e9e0f078d3cef83e40306ba9874b92c1df27d7d84a" }, "downloads": -1, "filename": "skal-0.1.1.tar.gz", "has_sig": false, "md5_digest": "52a39a842123ac7ba21eebd1e0b2b5eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7735, "upload_time": "2012-09-05T16:08:14", "url": "https://files.pythonhosted.org/packages/84/75/5498c2d255587894f2dccc9fbd460ad0792b8f56f76de3e54763e78cc993/skal-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "78c73333d486abbd4a89e55a2573dfc6", "sha256": "16d13c55fcc0d2400a0c5286b9161cdec5f3f1e4b407a90e69c1d352cca10ac5" }, "downloads": -1, "filename": "skal-0.1.10.tar.gz", "has_sig": false, "md5_digest": "78c73333d486abbd4a89e55a2573dfc6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8287, "upload_time": "2012-10-02T08:34:28", "url": "https://files.pythonhosted.org/packages/e8/6e/8c1eb68f3e367cc6692757e900795f79e7093fdf5c985b62a8bb6a43986a/skal-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "cdaab8e5c6ea99d2954e09bf97c32364", "sha256": "94a81546413c3a89f549274acccc7d0e995a4519cff2cb479024751d511a862e" }, "downloads": -1, "filename": "skal-0.1.11.tar.gz", "has_sig": false, "md5_digest": "cdaab8e5c6ea99d2954e09bf97c32364", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8362, "upload_time": "2012-11-08T18:20:20", "url": "https://files.pythonhosted.org/packages/f6/4b/32c62b431286e22dab2d1813ef13b03ca98f5f71685ec95835a2eaa8da54/skal-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "4024a413473c177fe72ba9150ac47f81", "sha256": "ebdc6702c6970b07389151ea35180d98b5db72d76a66e180c1ff3a958cc9b71e" }, "downloads": -1, "filename": "skal-0.1.12.tar.gz", "has_sig": false, "md5_digest": "4024a413473c177fe72ba9150ac47f81", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8362, "upload_time": "2013-01-21T09:55:12", "url": "https://files.pythonhosted.org/packages/8c/14/6a0bdd910939ffcdd5ff64c6d3896388b38be583679ce046c2cee7a254c2/skal-0.1.12.tar.gz" } ], "0.1.13": [ { "comment_text": "", "digests": { "md5": "097161495118628ca3dec017583609f4", "sha256": "b938a9a910aee5957bf8b23c5efc88d81115dff4b2b123dccf27bffb123cc7ee" }, "downloads": -1, "filename": "skal-0.1.13.tar.gz", "has_sig": false, "md5_digest": "097161495118628ca3dec017583609f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9563, "upload_time": "2013-01-22T13:54:21", "url": "https://files.pythonhosted.org/packages/e6/6d/71e7cf41629f5aa20f3f09398f6d63743749250e23b7243dc994283bd47a/skal-0.1.13.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "dde86bfe66b8da67a788ed50a8fe1f13", "sha256": "70c883d14d5d8c6ed8236b9026c1b0a058b78284c65ab3e8e178d6972cd6aabb" }, "downloads": -1, "filename": "skal-0.1.2.tar.gz", "has_sig": false, "md5_digest": "dde86bfe66b8da67a788ed50a8fe1f13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8447, "upload_time": "2012-09-07T14:43:53", "url": "https://files.pythonhosted.org/packages/d3/df/6774c1555b129afe2c21ac24f1d4c80f51a1eeac9c6cf2eb35b4e73e257d/skal-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "bf13fe03c9d48e956d1cbbee81308fc4", "sha256": "6598027805adf03c6a7c8629c0d287240e4d6b6929d54b63145a14673fecc565" }, "downloads": -1, "filename": "skal-0.1.3.tar.gz", "has_sig": false, "md5_digest": "bf13fe03c9d48e956d1cbbee81308fc4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7940, "upload_time": "2012-09-14T14:52:05", "url": "https://files.pythonhosted.org/packages/57/85/c0ac0e281929dc0debef041332cc43f9bd9569a9bbedd504c53139946dd3/skal-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "59ecfe2ccedc6aebcae72f4862aa6519", "sha256": "0897f1048a8f676ea289a3c0c1e6bbba92041e8851a526434652b46e24572841" }, "downloads": -1, "filename": "skal-0.1.4.tar.gz", "has_sig": false, "md5_digest": "59ecfe2ccedc6aebcae72f4862aa6519", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8000, "upload_time": "2012-09-18T13:29:21", "url": "https://files.pythonhosted.org/packages/4d/eb/9b9c41d3827f08a566588047033d9ce94ff948514e576a816b4dbdc075e0/skal-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "c4db168b11a9a30e58e93be1227cfc59", "sha256": "7cfc2c55309737afbf340aebf2af9b2a71aa8cd6cf58ce23df543461a4ea6c85" }, "downloads": -1, "filename": "skal-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c4db168b11a9a30e58e93be1227cfc59", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8082, "upload_time": "2012-09-18T14:40:12", "url": "https://files.pythonhosted.org/packages/ef/91/aa1b2206f08ab002f7d2eb9ff3a7d8acc013ea40e323d530209ddbd57b83/skal-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "503704f822c6b83aed65793308f34a3c", "sha256": "ed4c4290b241917369589c404724a76493f3753d982a231c36c419d51a371d2d" }, "downloads": -1, "filename": "skal-0.1.6.tar.gz", "has_sig": false, "md5_digest": "503704f822c6b83aed65793308f34a3c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8076, "upload_time": "2012-09-18T14:47:02", "url": "https://files.pythonhosted.org/packages/d0/9f/589736777b5a13e0caa1642a2e75d630deadbc4a2d2818845f21f1c93b1c/skal-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "d0b5638bee3d03b5245f1d03d893384a", "sha256": "0ab94f574628c67657195f740804ab257085ac306c7921612f486706a6067385" }, "downloads": -1, "filename": "skal-0.1.7.tar.gz", "has_sig": false, "md5_digest": "d0b5638bee3d03b5245f1d03d893384a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8203, "upload_time": "2012-09-19T16:14:29", "url": "https://files.pythonhosted.org/packages/1a/05/83cf83d3ebc50f296928d2a1ea851ffe1f5d5e5ec0d62bf2f374d5dcc3fa/skal-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "d796561a8dfa5f1646a24b43d393b6f7", "sha256": "6c60db74dd37f163e631703074b361429e9097bf8ae597c790fee8ef3f7af19b" }, "downloads": -1, "filename": "skal-0.1.8.tar.gz", "has_sig": false, "md5_digest": "d796561a8dfa5f1646a24b43d393b6f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8216, "upload_time": "2012-09-21T11:09:25", "url": "https://files.pythonhosted.org/packages/16/71/61705382b58f51e1c7dc126349372abc25b42aa718b55934caa04bd620ee/skal-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "41fe4f952d0bca78b56dbb3f4005c715", "sha256": "29114e6c5567b82ce666402ce4660251ede1d352046e168517347c22bc563a10" }, "downloads": -1, "filename": "skal-0.1.9.tar.gz", "has_sig": false, "md5_digest": "41fe4f952d0bca78b56dbb3f4005c715", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8228, "upload_time": "2012-09-21T11:28:43", "url": "https://files.pythonhosted.org/packages/fd/85/1ee0eb55a607e22024096c866689ff5dd80aafaa4b0b8f790703730e964c/skal-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "097161495118628ca3dec017583609f4", "sha256": "b938a9a910aee5957bf8b23c5efc88d81115dff4b2b123dccf27bffb123cc7ee" }, "downloads": -1, "filename": "skal-0.1.13.tar.gz", "has_sig": false, "md5_digest": "097161495118628ca3dec017583609f4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9563, "upload_time": "2013-01-22T13:54:21", "url": "https://files.pythonhosted.org/packages/e6/6d/71e7cf41629f5aa20f3f09398f6d63743749250e23b7243dc994283bd47a/skal-0.1.13.tar.gz" } ] }