{ "info": { "author": "Marc Lopez", "author_email": "marc.rainier.lopez@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "===============\r\nProcess Wrapper\r\n===============\r\n\r\n.. image:: https://travis-ci.org/marc-lopez/process-wrapper.svg?branch=v0.3.x\r\n :target: https://travis-ci.org/marc-lopez/process-wrapper\r\n\r\n.. image:: https://coveralls.io/repos/marc-lopez/process-wrapper/badge.svg?branch=v0.3.x\r\n :target: https://coveralls.io/r/marc-lopez/process-wrapper?branch=master\r\n\r\nProcess Wrapper is a simple module that executes a command-line style\r\nprogram via a context manager. This is useful if you want your script\r\nto do something that relies on a background process.\r\n\r\nThis module is conceived because of a need to automate the setup and\r\nteardown of the Django server when running Robotframework tests. Sample\r\nusage would look like this::\r\n\r\n #!/usr/bin/env python\r\n\r\n import robot\r\n from processwrapper import run_process\r\n\r\n with run_process('python manage.py runserver'):\r\n robot.run('blackbox_test.robot')\r\n\r\nRight now, the process being run is forcefully terminated with a SIGKILL\r\nor equivalent signal on context exit. Caution is advised.\r\n\r\nTo install\r\n==========\r\nRun in command line::\r\n\r\n pip install process-wrapper\r\n\r\nDependencies\r\n============\r\npsutil\r\n\r\nTested Capabilities\r\n===================\r\n- Kills parent and child processes on exit\r\n- Handles in-context exceptions: It still kills the called process and its children\r\n- Processes are properly cleaned up when in-context exceptions occur\r\n- Process wrapper will do nothing if it encounters a Process Not Found exception for the parent process and raise all others\r\n- Tested to work in win32 and linux2 platforms\r\n\r\nTest Command\r\n=============\r\nCommand used to test the module. Includes line and branch coverage::\r\n\r\n py.test processwrapper/tests --cov processwrapper --cov-report term-missing --pep8\r\n\r\nThanks to\r\n=========\r\n`jung rhew `_ for providing\r\nthe `basis of process teardown code that I used `_", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/marc-lopez/process-wrapper", "keywords": "", "license": "LICENSE.txt", "maintainer": "", "maintainer_email": "", "name": "process-wrapper", "package_url": "https://pypi.org/project/process-wrapper/", "platform": "linux2,win32", "project_url": "https://pypi.org/project/process-wrapper/", "project_urls": { "Homepage": "https://github.com/marc-lopez/process-wrapper" }, "release_url": "https://pypi.org/project/process-wrapper/0.3.0/", "requires_dist": null, "requires_python": null, "summary": "Context manager for background command-line programs", "version": "0.3.0" }, "last_serial": 2330583, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "374d99c43ed94bf77b4107e971e1c1fd", "sha256": "e29b45791c540ab21d7fc02b9105365488ec1f004941310f42c850beae52cc86" }, "downloads": -1, "filename": "process-wrapper-0.1.0.zip", "has_sig": false, "md5_digest": "374d99c43ed94bf77b4107e971e1c1fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7664, "upload_time": "2015-03-20T22:26:00", "url": "https://files.pythonhosted.org/packages/f9/ba/d980f62832c5b3e0b12bf978ac6e80e254fb8887f36607a01a6590a624e9/process-wrapper-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "97546031467a0918ca1e622d2ea0b01b", "sha256": "1f0a96a5aab9437b9ea0839da1ed556ff5cf5503044c871aaef9f412c24fe637" }, "downloads": -1, "filename": "process-wrapper-0.1.1.zip", "has_sig": false, "md5_digest": "97546031467a0918ca1e622d2ea0b01b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7872, "upload_time": "2015-03-20T23:43:45", "url": "https://files.pythonhosted.org/packages/05/71/5b799972b0d81b5646a99e229c7406f78d15906172d7082042c24b981298/process-wrapper-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "436624f7bb0ba36780c2b1ae55e4e3b7", "sha256": "08b879a263434320be8377c57080e3b5b59487331c8d8c92c4b5ecd97f9b5c1b" }, "downloads": -1, "filename": "process-wrapper-0.1.2.zip", "has_sig": false, "md5_digest": "436624f7bb0ba36780c2b1ae55e4e3b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8120, "upload_time": "2015-03-21T03:08:38", "url": "https://files.pythonhosted.org/packages/ee/e5/dd37d177dea6b1510a3fa58858d867169003ca8c68a6eadf8c0c15f44cab/process-wrapper-0.1.2.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2146737693928fefbeae4db3eabb2f93", "sha256": "51fb9158d982f0d0de4f1794fa2fbee6f34f06d030978ad295a127edc25650da" }, "downloads": -1, "filename": "process-wrapper-0.2.0b.zip", "has_sig": false, "md5_digest": "2146737693928fefbeae4db3eabb2f93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9921, "upload_time": "2015-03-23T04:04:26", "url": "https://files.pythonhosted.org/packages/46/78/4e7c8d53b340714986d83b3e7452488973bf9567a1164532e094eda1cdf4/process-wrapper-0.2.0b.zip" } ], "0.2.1": [], "0.2.2": [ { "comment_text": "", "digests": { "md5": "aebc2e77f8160e4c6a2c11aa01927b18", "sha256": "6387bbf736d9b140adc5d37e279b6109c4bdfa950e075c6d77348cc9ba4efc71" }, "downloads": -1, "filename": "process-wrapper-0.2.2.zip", "has_sig": false, "md5_digest": "aebc2e77f8160e4c6a2c11aa01927b18", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9921, "upload_time": "2015-03-23T03:51:27", "url": "https://files.pythonhosted.org/packages/69/5c/af254a15c06f66f78499acfad545748a46746ae73564794d4e881bc6dd93/process-wrapper-0.2.2.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "e3888a5f6b41a2f042d5f2f984fcd785", "sha256": "e6bc8be54d23f297af1625f7540168a4b3b26332e1ba65a2ce28e1267df40cfc" }, "downloads": -1, "filename": "process_wrapper-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e3888a5f6b41a2f042d5f2f984fcd785", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6564, "upload_time": "2016-09-08T03:32:40", "url": "https://files.pythonhosted.org/packages/b3/27/2df972f3c089948961268b6f61930c8b43b64ca4f1f01209ce11d0db8b0d/process_wrapper-0.3.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e3888a5f6b41a2f042d5f2f984fcd785", "sha256": "e6bc8be54d23f297af1625f7540168a4b3b26332e1ba65a2ce28e1267df40cfc" }, "downloads": -1, "filename": "process_wrapper-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e3888a5f6b41a2f042d5f2f984fcd785", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6564, "upload_time": "2016-09-08T03:32:40", "url": "https://files.pythonhosted.org/packages/b3/27/2df972f3c089948961268b6f61930c8b43b64ca4f1f01209ce11d0db8b0d/process_wrapper-0.3.0-py2.py3-none-any.whl" } ] }