{ "info": { "author": "Raghunandan Rao", "author_email": "r.raghunandan@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "`|Build Status| `_\n\nA pynt of Python build.\n=======================\n\n`Raghunandan Rao `_\n\nFeatures\n--------\n\n- Easy to learn.\n- Build tasks are just python funtions.\n- Manages dependencies between tasks.\n- Automatically generates a command line interface.\n- Rake style param passing to tasks\n- Supports python 2.7 and python 3.x\n\nInstallation\n------------\n\nYou can install pynt from the Python Package Index (PyPI) or from\nsource.\n\nUsing pip\n\n::\n\n $ pip install pynt\n\nUsing easy\\_install\n\n::\n\n $ easy_install pynt\n\nExample\n-------\n\nThe build script is written in pure Python and pynt takes care of\nmanaging any dependencies between tasks and generating a command line\ninterface.\n\nWriting build tasks is really simple, all you need to know is the @task\ndecorator. Tasks are just regular Python functions marked with the\n``@task()`` decorator. Dependencies are specified with ``@task()`` too.\nTasks can be ignored with the ``@task(ignore=True)``. Disabling a task\nis an useful feature to have in situations where you have one task that\na lot of other tasks depend on and you want to quickly remove it from\nthe dependency chains of all the dependent tasks. Note that any task\nwhose name starts with an underscore(\\ ``_``) will be considered\nprivate. Private tasks are not listed in with ``pynt -l``, but they can\nstill be run with ``pynt _private_task_name``\n\n**build.py**\n------------\n\n::\n\n\n #!/usr/bin/python\n\n import sys\n from pynt import task\n\n @task()\n def clean():\n '''Clean build directory.'''\n print 'Cleaning build directory...'\n\n @task(clean)\n def html(target='.'):\n '''Generate HTML.'''\n print 'Generating HTML in directory \"%s\"' % target\n\n @task()\n def _copy_resources():\n '''Copy resource files. This is a private task. \"pynt -l\" will not list this'''\n print('Copying resource files')\n\n @task(clean, _copy_resources)\n def html(target='.'):\n '''Generate HTML.'''\n print 'Generating HTML in directory \"%s\"' % target\n\n @task(clean, _copy_resources, ignore=True)\n def images():\n '''Prepare images.'''\n print 'Preparing images...'\n\n @task(start_server) #Depends on task with all optional params\n def stop_server():\n print 'Stopping server....'\n\n @task()\n def copy_file(src, dest):\n print 'Copying from %s to %s' % (src, dest)\n\n @task()\n def echo(*args,**kwargs):\n print args\n print kwargs\n\n # Default task (if specified) is run when no task is specified in the command line\n # make sure you define the variable __DEFAULT__ after the task is defined\n # A good convention is to define it at the end of the module\n # __DEFAULT__ is an optional member\n\n __DEFAULT__=start_server\n\n**Running pynt tasks**\n----------------------\n\nThe command line interface and help is automatically generated. Task\ndescriptions are extracted from function docstrings.\n\n::\n\n $ pynt -h\n usage: pynt [-h] [-l] [-v] [-f file] [task [task ...]]\n\n positional arguments:\n task perform specified task and all its dependencies\n\n optional arguments:\n -h, --help show this help message and exit\n -l, --list-tasks List the tasks\n -v, --version Display the version information\n -f file, --file file Build file to read the tasks from. Default is\n 'build.py'\n\n::\n\n $ pynt -l\n Tasks in build file ./build.py:\n clean Clean build directory.\n copy_file \n echo \n html Generate HTML.\n images [Ignored] Prepare images.\n start_server [Default] Start the server\n stop_server \n\n Powered by pynt - A Lightweight Python Build Tool.\n\npynt takes care of dependencies between tasks. In the following case\nstart\\_server depends on clean, html and image generation (image task is\nignored).\n\n::\n\n $ pynt #Runs the default task start_server. It does exactly what \"pynt start_server\" would do.\n [ example.py - Starting task \"clean\" ]\n Cleaning build directory...\n [ example.py - Completed task \"clean\" ]\n [ example.py - Starting task \"html\" ]\n Generating HTML in directory \".\"\n [ example.py - Completed task \"html\" ]\n [ example.py - Ignoring task \"images\" ]\n [ example.py - Starting task \"start_server\" ]\n Starting server at localhost:80\n [ example.py - Completed task \"start_server\" ]\n\nThe first few characters of the task name is enough to execute the task,\nas long as the partial name is unambigious. You can specify multiple\ntasks to run in the commandline. Again the dependencies are taken taken\ncare of.\n\n::\n\n $ pynt cle ht cl\n [ example.py - Starting task \"clean\" ]\n Cleaning build directory...\n [ example.py - Completed task \"clean\" ]\n [ example.py - Starting task \"html\" ]\n Generating HTML in directory \".\"\n [ example.py - Completed task \"html\" ]\n [ example.py - Starting task \"clean\" ]\n Cleaning build directory...\n [ example.py - Completed task \"clean\" ]\n\nThe 'html' task dependency 'clean' is run only once. But clean can be\nexplicitly run again later.\n\npynt tasks can accept parameters from commandline.\n\n::\n\n $ pynt \"copy_file[/path/to/foo, path_to_bar]\"\n [ example.py - Starting task \"clean\" ]\n Cleaning build directory...\n [ example.py - Completed task \"clean\" ]\n [ example.py - Starting task \"copy_file\" ]\n Copying from /path/to/foo to path_to_bar\n [ example.py - Completed task \"copy_file\" ]\n\npynt can also accept keyword arguments.\n\n::\n\n $ pynt start[port=8888]\n [ example.py - Starting task \"clean\" ]\n Cleaning build directory...\n [ example.py - Completed task \"clean\" ]\n [ example.py - Starting task \"html\" ]\n Generating HTML in directory \".\"\n [ example.py - Completed task \"html\" ]\n [ example.py - Ignoring task \"images\" ]\n [ example.py - Starting task \"start_server\" ]\n Starting server at localhost:8888\n [ example.py - Completed task \"start_server\" ]\n\n $ pynt echo[hello,world,foo=bar,blah=123]\n [ example.py - Starting task \"echo\" ]\n ('hello', 'world')\n {'blah': '123', 'foo': 'bar'}\n [ example.py - Completed task \"echo\" ]\n\n**Organizing build scripts**\n----------------------------\n\nYou can break up your build files into modules and simple import them\ninto your main build file.\n\n::\n\n from deploy_tasks import *\n from test_tasks import functional_tests, report_coverage\n\nContributors/Contributing\n-------------------------\n\n- Calum J. Eadie - pynt is preceded by and forked from\n `microbuild `_, which was\n created by `Calum J. Eadie `_.\n\nIf you want to make changes the repo is at https://github.com/rags/pynt.\nYou will need `pytest `_ to run the tests\n\n::\n\n $ ./b t\n\nIt will be great if you can raise a `pull\nrequest `_ once\nyou are done.\n\n*If you find any bugs or need new features please raise a ticket in the\n`issues section `_ of the github\nrepo.*\n\nLicense\n-------\n\npynt is licensed under a `MIT\nlicense `_\n\n.. |Build\nStatus| image:: https://travis-ci.org/rags/pynt.png?branch=master\n\nChanges\n=======\n0.8.2 - 23/06/2018\n------------------\n* private tasks. Any tasks that start with an underscore(_) are private by convention.\n\n\n0.8.1 - 02/09/2013\n------------------\n* Enabling extensions\n\n0.8.0 - 02/09/2013\n------------------\n* Support for specifying a default task with __DEFAULT__ variable\n* pynt -v (--version) for displays version info\n* pynt -l lists tasks in alphabetical order\n\n0.7.1 - 17/03/2013\n------------------\n* Migrated pynt to work on python 3.x. pynt still works on 2.7.\n* pynt version now displayed as part of help output.\n\n0.7.0 - 16/02/2013\n------------------\n\n* New commandline interface. Distribution now includes 'pynt' executable.\n* 'build.py' is the default build file.\n* Build files no longer need \"if main\" construct.\n* pynt no longer exposes build method. This is a backward incompatible change.\n\n\n0.6.0 - 17/12/2012\n------------------\n\n* Simplified ignoring tasks. ignore a keyword param for task and not a separate decorator. [This change is NOT backward compatible!!!]\n* Added support for listing tasks\n* Improved help\n\n\n0.5.0 - 01/12/2012\n------------------\n\n* Ability to pass params to tasks.\n* Major rewrite and flattening the package hierarchy.\n\n0.4.0 - 17/11/2012\n------------------\n\n* Support for running multiple tasks from commandline.\n* Ability to run tasks by typing in just the first few unambigious charecters.\n\n\nChanges before forking from microbuild\n======================================\n\n0.3.0 - 18/09/2012\n------------------\n\n* Fixed bug in logging. No longer modifies root logger.\n* Added ignore functionality.\n* Extended API documentation.\n\n0.2.0 - 29/08/2012\n------------------\n\n* Added progress tracking output.\n* Added handling of exceptions within tasks.\n\n0.1.0 - 28/08/2012\n------------------\n\n* Initial release.\n* Added management of dependancies between tasks.\n* Added automatic generation of command line interface.\n\n\n", "description_content_type": "", "docs_url": "https://pythonhosted.org/pynt/", "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://rags.github.com/pynt/", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "pynt", "package_url": "https://pypi.org/project/pynt/", "platform": "", "project_url": "https://pypi.org/project/pynt/", "project_urls": { "Homepage": "http://rags.github.com/pynt/" }, "release_url": "https://pypi.org/project/pynt/0.8.2/", "requires_dist": null, "requires_python": "", "summary": "Lightweight Python Build Tool.", "version": "0.8.2" }, "last_serial": 3996313, "releases": { "0.5.0": [ { "comment_text": "", "digests": { "md5": "65d1bc6344699e4f5b1e4ef41b8ed2cc", "sha256": "838de317401a62eecaeb399ebbee47fb4f67766e01edc50ea18d829e5be58a39" }, "downloads": -1, "filename": "pynt-0.5.0.macosx-10.6-intel.exe", "has_sig": false, "md5_digest": "65d1bc6344699e4f5b1e4ef41b8ed2cc", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 74027, "upload_time": "2012-12-01T22:11:23", "url": "https://files.pythonhosted.org/packages/51/8c/927d899b7795b3660865386b9ad901e0d9468ebaa20d5dfe53826f0e15d8/pynt-0.5.0.macosx-10.6-intel.exe" }, { "comment_text": "", "digests": { "md5": "9f874a4f5aa809a02d51eaf6e6eb3820", "sha256": "771999550be8dc75074c144d3cf72c85d8f78e2be10a3b85c2acf9babb2d9500" }, "downloads": -1, "filename": "pynt-0.5.0.tar.gz", "has_sig": false, "md5_digest": "9f874a4f5aa809a02d51eaf6e6eb3820", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6537, "upload_time": "2012-12-01T22:15:27", "url": "https://files.pythonhosted.org/packages/8f/87/263ca90ab55e48da7ca9edad4a4a5c614d4251706456fdb160d73771e8a0/pynt-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "f3b0761560b4a73833b019c30ea4d6c9", "sha256": "35978137df7557285bfb58096af164a5e84227f704f884698aee804f4e7ae1b7" }, "downloads": -1, "filename": "pynt-0.6.0.macosx-10.6-intel.exe", "has_sig": false, "md5_digest": "f3b0761560b4a73833b019c30ea4d6c9", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 74692, "upload_time": "2012-12-16T23:05:42", "url": "https://files.pythonhosted.org/packages/b3/c8/ae86ae5a4f17392e1bbd53a47c43fd5d513ac204e1a8206fc2a530f38843/pynt-0.6.0.macosx-10.6-intel.exe" }, { "comment_text": "", "digests": { "md5": "5407c70ca7640c0ac604d414367ddf13", "sha256": "9a1209a7f42c121a97bd4175391494b41ee7677f4e79379ea65af9ca30302a99" }, "downloads": -1, "filename": "pynt-0.6.0.tar.gz", "has_sig": false, "md5_digest": "5407c70ca7640c0ac604d414367ddf13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6680, "upload_time": "2012-12-17T05:35:42", "url": "https://files.pythonhosted.org/packages/75/04/da13778b94de08dc91dafc0cf7fdb5f5eec7885b57303dd3cf25439c0683/pynt-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "05530d0d0dcba59b5f6f33824bee22c3", "sha256": "887e3d3588dce3f57065a770142b89554db7ad457130bce243359b426f2a087a" }, "downloads": -1, "filename": "pynt-0.7.0.macosx-10.6-intel.exe", "has_sig": false, "md5_digest": "05530d0d0dcba59b5f6f33824bee22c3", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 80906, "upload_time": "2013-02-16T10:44:55", "url": "https://files.pythonhosted.org/packages/54/c0/95ece63352f883826e42a4481dd26c30c552d1f22a98546198c41b0017e7/pynt-0.7.0.macosx-10.6-intel.exe" }, { "comment_text": "", "digests": { "md5": "07615e7f5df3d6b62cfe779cd313a2ae", "sha256": "c32c5640909d6c08a42bcb136ce167f44237b006c472e29b06dafb660c331e6b" }, "downloads": -1, "filename": "pynt-0.7.0.tar.gz", "has_sig": false, "md5_digest": "07615e7f5df3d6b62cfe779cd313a2ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7782, "upload_time": "2013-02-16T10:44:44", "url": "https://files.pythonhosted.org/packages/44/37/3285158f853274f8e40a3cc40e1bea2b67df9649c7eceee4abc17cf2d21e/pynt-0.7.0.tar.gz" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "c94e33df49ccbf85612785216ab5e208", "sha256": "ba0d1a4d0a8853921e9d5b603f6b12147f301685086e4a08445da7ab5af2f94d" }, "downloads": -1, "filename": "pynt-0.7.1.macosx-10.6-intel.exe", "has_sig": false, "md5_digest": "c94e33df49ccbf85612785216ab5e208", "packagetype": "bdist_wininst", "python_version": "any", "requires_python": null, "size": 81298, "upload_time": "2013-03-17T22:16:14", "url": "https://files.pythonhosted.org/packages/51/57/dc1c75cba3769bc37ffb8307c7d103293401a5e2cb3081e1cd339e131b31/pynt-0.7.1.macosx-10.6-intel.exe" }, { "comment_text": "", "digests": { "md5": "43827de7694120f8b6c2a009d187c774", "sha256": "4fde933e1bfcd7b63caa0cd476ac123dffb2f693012137c9cabb4e782a48c2fb" }, "downloads": -1, "filename": "pynt-0.7.1.tar.gz", "has_sig": false, "md5_digest": "43827de7694120f8b6c2a009d187c774", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7972, "upload_time": "2013-03-17T22:16:04", "url": "https://files.pythonhosted.org/packages/b7/ac/3a7db5013ed470318b2cb5a6c106391f0549d1cbbce5711f5e18692cf1af/pynt-0.7.1.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "5eb9d2a49a37400ab16d817abed97ac5", "sha256": "331505e97413e973e9a3976f1b62eed2177d0bbf6fbf9341f0070b98336d5684" }, "downloads": -1, "filename": "pynt-0.8.0_patched.tar.gz", "has_sig": false, "md5_digest": "5eb9d2a49a37400ab16d817abed97ac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8677, "upload_time": "2015-02-21T11:09:26", "url": "https://files.pythonhosted.org/packages/b6/d6/ea92a813fa6d50a9b6739e03f09b23d5f7ccfdf06810a252a35e22318cba/pynt-0.8.0_patched.tar.gz" } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "a1d0762b69918e70f038aefb221d900f", "sha256": "ee96036e3957d349eb23de9d09b570c88fee23ab38ca0418e760d4a90b65e116" }, "downloads": -1, "filename": "pynt-0.8.1.tar.gz", "has_sig": false, "md5_digest": "a1d0762b69918e70f038aefb221d900f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8688, "upload_time": "2015-02-21T11:21:52", "url": "https://files.pythonhosted.org/packages/71/1b/8c6c51ac3a9f3b4139c653c7456aa28da6d90dadf443a1def7905af9a0c7/pynt-0.8.1.tar.gz" } ], "0.8.2": [ { "comment_text": "", "digests": { "md5": "f4673628be1e575573ede61293beb476", "sha256": "be13be37f8237be4a6f6f3031aebcb0c2e61a1894a85a21b85a21e397961c7b3" }, "downloads": -1, "filename": "pynt-0.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f4673628be1e575573ede61293beb476", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7912, "upload_time": "2018-06-24T06:23:48", "url": "https://files.pythonhosted.org/packages/e2/d1/424f6254c54a42fd8616ce94891207e7c19b20bdb58c776e807bef19a030/pynt-0.8.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8242af0c4a20354e25e132e5aa43825", "sha256": "f38b9b775804eff6e291bd6894669954d94c680b196adee56c96d082a135483c" }, "downloads": -1, "filename": "pynt-0.8.2.tar.gz", "has_sig": false, "md5_digest": "d8242af0c4a20354e25e132e5aa43825", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8896, "upload_time": "2018-06-24T06:23:50", "url": "https://files.pythonhosted.org/packages/6e/7a/b381cb0be91778e74253bb6d7af70bf1b8b62df31df65d7e8bf2531b4822/pynt-0.8.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "f4673628be1e575573ede61293beb476", "sha256": "be13be37f8237be4a6f6f3031aebcb0c2e61a1894a85a21b85a21e397961c7b3" }, "downloads": -1, "filename": "pynt-0.8.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f4673628be1e575573ede61293beb476", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7912, "upload_time": "2018-06-24T06:23:48", "url": "https://files.pythonhosted.org/packages/e2/d1/424f6254c54a42fd8616ce94891207e7c19b20bdb58c776e807bef19a030/pynt-0.8.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d8242af0c4a20354e25e132e5aa43825", "sha256": "f38b9b775804eff6e291bd6894669954d94c680b196adee56c96d082a135483c" }, "downloads": -1, "filename": "pynt-0.8.2.tar.gz", "has_sig": false, "md5_digest": "d8242af0c4a20354e25e132e5aa43825", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8896, "upload_time": "2018-06-24T06:23:50", "url": "https://files.pythonhosted.org/packages/6e/7a/b381cb0be91778e74253bb6d7af70bf1b8b62df31df65d7e8bf2531b4822/pynt-0.8.2.tar.gz" } ] }