{ "info": { "author": "Moises P. Sena", "author_email": "moisespsena@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", "Topic :: Utilities" ], "description": "singlesp.py\n===========\n\nThe Single Subprocess usage module.\n\nAuthor: Moises P. Sena moisespsena@gmail.com\n\nLicense: MIT\n\nExamples\n--------\n\n.. code:: python\n\n from singlesp import *\n\nInstantiate\n-----------\n\n.. code:: python\n\n p = Proc('date')\n # or\n p = Proc(['echo', __file__])\n\nstdout\n------\n\nFor set **stdout** callback, use the ``>`` operator.\n\n.. code:: python\n\n print(p.read())\n # or\n print(p.wait().read())\n # or\n print(p.run().wait().read())\n\n def cb_out(proc):\n for line in proc.out:\n print(\"STDOUT: %r\" % line)\n \n Proc('date', callbacks=[cb_out]).wait()\n\n def cb_outreader(reader):\n for line in reader:\n print(\"STDOUT: %r\" % line)\n\n (Proc('date') > cb_outreader).wait()\n\n # or\n\n p = Proc('date') > cb_outreader\n p.wait()\n\nbuffer\n~~~~~~\n\n.. code:: python\n\n def cb_outreader(reader):\n for data in reader(10):\n print(\"STDOUT: %r\" % data)\n\n (Proc('date') > cb_outreader).wait()\n\nstderr\n------\n\nFor set **stderr** callback, use the ``>>`` operator.\n\n.. code:: python\n\n def cb_errreader(reader):\n for data in reader:\n print(\"ERR: %r\" % data)\n\n (Proc('date') >> cb_outreader).wait()\n\nstdout and stderr callbacks\n---------------------------\n\n.. code:: python\n\n def cbo(reader):\n for data in reader:\n print(\"OUT: %r\" % data)\n \n def cbe(reader):\n for data in reader:\n print(\"ERR: %r\" % data)\n\n (Proc('echo out data;echo err data >&2;') > cbo >> cbe).wait()\n\ncallbacks\n---------\n\n.. code:: python\n\n # async read stdout and stderr\n\n def cb_stdout(proc):\n for line in proc.out:\n print(\"STDOUT: %r\" % line)\n\n def cb_stderr(proc):\n for line in proc.err:\n print(\"STDERR: %r\" % line)\n\n Proc('seq 1 3 | while read l; do echo \"i= $l\"; echo \"i in err: $l\" >&2; done',\n callbacks=[cb_stdout, cb_stderr]).wait()\n\nMany commands async\n-------------------\n\n.. code:: python\n\n Proc('echo CMD-1: first command with sleep 1; sleep 1; echo CMD-1: done',\n callbacks=[cb_stdout, cb_stderr]).run()\n Proc('echo CMD-2: show date; date; echo CMD-2: done',\n callbacks=[cb_stdout, cb_stderr]).run()\n\n # wait all callbacks\n print(\"before wait\")\n wait()\n print(\"done\")\n\nGet exit status\n---------------\n\n.. code:: python\n\n p = Proc('date').run().wait()\n # or p = Proc('date').wait()\n print(p.status)\n\nPipes\n-----\n\nSimple:\n\n.. code:: python\n\n (Input(['God ', 'is ', 'Love!!']) | Proc(['cat'])).read()\n\n def cb_stdout(reader):\n for line in reader:\n print(\"STDOUT: %r\" % line)\n \n p = Proc('seq 1 3') | Proc('grep 2') > cb_stdout\n # or p = Proc('seq 1 3').pipe(Proc('grep 2')) > cb_stdout\n\n p.run()\n wait()\n\n print(Input(['God ', 'is ', 'Love!!']) | Proc(['cat'])).read()\n\n\n def gen():\n yield 'God '\n yield 'is '\n yield 'Love!!'\n\n\n print(Input(gen()) | Proc(['cat'])).read()\n\n print(Commands(['date']) | Proc(['bash'])).read()\n\n print(Commands(['date']) | bash()).read()\n\n print(Commands(['date']) | sh()).read()\n\n wait()\n\nSimple:\n\n.. code:: python\n\n \n p = Proc('seq 1 3') | Proc('grep 2') > cb_stdout\n p.run()\n wait()\n\nComplex:\n\n.. code:: python\n\n def cb_stdout(proc):\n for line in proc.out:\n print(\"STDOUT: %r\" % line)\n\n def a_stderr(proc):\n for line in proc.err:\n print(\"A-STDERR: %r\" % line)\n\n def b_stderr(proc):\n for line in proc.err:\n print(\"B-STDERR: %r\" % line)\n\n p = Proc('echo \"[A] error message\" >&2;seq 1 3', callbacks=[a_stderr]) | \\\n Proc('while read l; do echo \"i= $l\"; echo \"[B] i in err: $l\" >&2; done',\n callbacks=[cb_stdout, b_stderr])\n p.run()\n wait()", "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/moisespsena/singlesp.py", "keywords": "system proc subprocess", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "singlesp", "package_url": "https://pypi.org/project/singlesp/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/singlesp/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/moisespsena/singlesp.py" }, "release_url": "https://pypi.org/project/singlesp/1.0.1/", "requires_dist": null, "requires_python": null, "summary": "Simple uses for Python subproccess module", "version": "1.0.1" }, "last_serial": 2284801, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "c62d463d577f6629644761c67a91347b", "sha256": "b533f92425f29fedb67e1e7f1bdae2e07a408461eb0308dab7dc725c943b559e" }, "downloads": -1, "filename": "singlesp-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "c62d463d577f6629644761c67a91347b", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 1986, "upload_time": "2016-08-16T17:20:06", "url": "https://files.pythonhosted.org/packages/22/71/bbd4da074a7008eef804f9cb5f568328b3437653bfc33d6141521ac7dd55/singlesp-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "c6d0f55df7465b842abca3853294624b", "sha256": "31ec33d9f638cf3e6e9edda5e346b2776af4baac1e95f7e43ab5fe33c3ce86e2" }, "downloads": -1, "filename": "singlesp-1.0.0-py3.4.egg", "has_sig": false, "md5_digest": "c6d0f55df7465b842abca3853294624b", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 1986, "upload_time": "2016-08-16T17:20:19", "url": "https://files.pythonhosted.org/packages/99/79/4acf757e6fc61dff729425302ada8ed0caede72da15efdfce4f6ba5df767/singlesp-1.0.0-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "8d9b422627e06ec817d347d6ae4dd364", "sha256": "4e35ed959fa512198028455526b3bff5b1f3071d56ff90b4bad497343a3d4c04" }, "downloads": -1, "filename": "singlesp-1.0.0.tar.gz", "has_sig": false, "md5_digest": "8d9b422627e06ec817d347d6ae4dd364", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 2870, "upload_time": "2016-08-16T17:20:11", "url": "https://files.pythonhosted.org/packages/84/73/a2fb8b091a4c7f68a5ba7a15b07de3a1d984460752b15dd2dfe0820527d9/singlesp-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "8349262d7823aafeccf5533d792b58f5", "sha256": "710ce5f5f34863873b687bbe84d05593880963dba7d953e5d231a36d82059417" }, "downloads": -1, "filename": "singlesp-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "8349262d7823aafeccf5533d792b58f5", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9439, "upload_time": "2016-08-16T18:50:49", "url": "https://files.pythonhosted.org/packages/3b/46/484a30fa5d8740532d585e3961151e7b9bf21e3ab4e7378ddce13c5f8bbb/singlesp-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "17b290751705b814eb1a622b25a71772", "sha256": "4dae8b1101d07b0bde65287f8161a7f7f162c24c3e7fba8961dd294062edf6ac" }, "downloads": -1, "filename": "singlesp-1.0.1-py3.4.egg", "has_sig": false, "md5_digest": "17b290751705b814eb1a622b25a71772", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 9793, "upload_time": "2016-08-16T18:50:56", "url": "https://files.pythonhosted.org/packages/ef/d2/a4e5acf32b668e04c7ee212c02fafd0fc7cbbbb2042b5222d180e5602da1/singlesp-1.0.1-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "f6f1ee24cfba176b49cf5c44a69c3d08", "sha256": "c6f899e760979047e64112f53ade9e6c05474a09ff1dd353d0c461dfe7c27cd4" }, "downloads": -1, "filename": "singlesp-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f6f1ee24cfba176b49cf5c44a69c3d08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5257, "upload_time": "2016-08-16T18:50:52", "url": "https://files.pythonhosted.org/packages/f2/23/4b2b6646aace8e730fa2b3579cc354586a485167daa658852ea430e6c05f/singlesp-1.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8349262d7823aafeccf5533d792b58f5", "sha256": "710ce5f5f34863873b687bbe84d05593880963dba7d953e5d231a36d82059417" }, "downloads": -1, "filename": "singlesp-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "8349262d7823aafeccf5533d792b58f5", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 9439, "upload_time": "2016-08-16T18:50:49", "url": "https://files.pythonhosted.org/packages/3b/46/484a30fa5d8740532d585e3961151e7b9bf21e3ab4e7378ddce13c5f8bbb/singlesp-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "17b290751705b814eb1a622b25a71772", "sha256": "4dae8b1101d07b0bde65287f8161a7f7f162c24c3e7fba8961dd294062edf6ac" }, "downloads": -1, "filename": "singlesp-1.0.1-py3.4.egg", "has_sig": false, "md5_digest": "17b290751705b814eb1a622b25a71772", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 9793, "upload_time": "2016-08-16T18:50:56", "url": "https://files.pythonhosted.org/packages/ef/d2/a4e5acf32b668e04c7ee212c02fafd0fc7cbbbb2042b5222d180e5602da1/singlesp-1.0.1-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "f6f1ee24cfba176b49cf5c44a69c3d08", "sha256": "c6f899e760979047e64112f53ade9e6c05474a09ff1dd353d0c461dfe7c27cd4" }, "downloads": -1, "filename": "singlesp-1.0.1.tar.gz", "has_sig": false, "md5_digest": "f6f1ee24cfba176b49cf5c44a69c3d08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5257, "upload_time": "2016-08-16T18:50:52", "url": "https://files.pythonhosted.org/packages/f2/23/4b2b6646aace8e730fa2b3579cc354586a485167daa658852ea430e6c05f/singlesp-1.0.1.tar.gz" } ] }