{ "info": { "author": "Colm O'Connor", "author_email": "colm.oconnor.github@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.1", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Topic :: Software Development :: Build Tools" ], "description": "Patrol\n======\n\nTrigger methods from changed files - e.g. selectively rebuild your project or\nrun tests as soon as you hit the save button on your text editor or IDE.\n\nPatrol works well with ProjectKey_.\n\n\nUse\n===\n\nTo install::\n\n pip install patrol\n\nExample code:\n\n.. code-block:: python\n\n import patrol\n\n def build(filenames):\n touch(\"output/build_started\")\n time.sleep(2)\n touch(\"output/build_finished\")\n\n def run_test(filenames):\n touch(\"output/test_started\")\n time.sleep(30)\n touch(\"output/test_finished\")\n\n patrol.watch([\n patrol.Trigger(\n build,\n includes=[\"data/*\", ],\n excludes=['data/exclude/*', 'output/*', ],\n ),\n patrol.Trigger(\n run_test,\n includes=[\"data/*\", ],\n excludes=['data/exclude/*', 'output/*', ],\n reaper=patrol.Reaper(), # If triggered while method is in progress, this will stop it and start it again.\n fire_on_initialization=True, # When the watch is initiated, this trigger will also fire.\n ),\n ],\n directory=os.getcwd(), # By default it patrols the present working directory.\n lockfiles=[\".git/index.lock\", ], # This will wait until git has finished its operations before firing any triggers\n )\n\n\n\nFeatures\n========\n\n* Patrol does not use polling to detect file changes. It uses libuv_, which creates event driven hooks to filesystem events using epoll, kqueue or IOCP.\n* You can queue up triggers when a specified lockfile is present - e.g. you can use to prevent triggers from firing until git operations are done.\n* Patrol comes with a customized Reaper class that can be used to specify how a process is stopped.\n\n.. _ProjectKey: https://github.com/crdoconnor/projectkey\n\n.. _libuv: https://github.com/libuv/libuv", "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/crdoconnor/patrol", "keywords": "development environment tool pyuv epoll build", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "patrol", "package_url": "https://pypi.org/project/patrol/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/patrol/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/crdoconnor/patrol" }, "release_url": "https://pypi.org/project/patrol/0.3.1/", "requires_dist": null, "requires_python": null, "summary": "Trigger custom commands from filesystem events.", "version": "0.3.1" }, "last_serial": 1649757, "releases": { "0.1": [], "0.2": [], "0.3": [ { "comment_text": "", "digests": { "md5": "384769aaa4876533a33445fc9ec43255", "sha256": "5c432790b5ad9154a86653b3f56975e11ccdd53998c5f7cc75364724a32b3120" }, "downloads": -1, "filename": "patrol-0.3.tar.gz", "has_sig": false, "md5_digest": "384769aaa4876533a33445fc9ec43255", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5597, "upload_time": "2015-05-15T13:25:32", "url": "https://files.pythonhosted.org/packages/80/2f/c8c2a7a1de15efa0d22f8d65d7947555b5697706f9eea76c7a3e16777fed/patrol-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "9f0a7fcf7929f82bf8fcec8ec5c661c6", "sha256": "47534ed32c5ff85f8b2f067fbc3aa0a6361f6c751414915ba225f9e3875b7331" }, "downloads": -1, "filename": "patrol-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9f0a7fcf7929f82bf8fcec8ec5c661c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5610, "upload_time": "2015-07-26T03:51:21", "url": "https://files.pythonhosted.org/packages/a7/25/e9f2d078a668f966c8cb3ad557b77e4bb3cf5d3d65152ffffa9df99c8082/patrol-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9f0a7fcf7929f82bf8fcec8ec5c661c6", "sha256": "47534ed32c5ff85f8b2f067fbc3aa0a6361f6c751414915ba225f9e3875b7331" }, "downloads": -1, "filename": "patrol-0.3.1.tar.gz", "has_sig": false, "md5_digest": "9f0a7fcf7929f82bf8fcec8ec5c661c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5610, "upload_time": "2015-07-26T03:51:21", "url": "https://files.pythonhosted.org/packages/a7/25/e9f2d078a668f966c8cb3ad557b77e4bb3cf5d3d65152ffffa9df99c8082/patrol-0.3.1.tar.gz" } ] }