{ "info": { "author": "Gustavo Fonseca & contributors", "author_email": "gustavo@gfonseca.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "==============\npicles.plumber\n==============\n\nA simple data transformation pipeline based on python's iteration protocol that\nruns on python versions 2.7, 3.3 and 3.4.\n\n.. code-block::\n\n +----------+ +-------------+ +-------------+ +--------+ +----------+\n | Producer | ---> | Transformer | ---> | Transformer | ---> | Tester | ---> | Consumer |\n +----------+ +-------------+ +-------------+ +--------+ +----------+\n\n\n\nA pipeline model expects 4 types of filters:\n\n* Producer: starting point, outbound only;\n* Transformer: input, processing, output;\n* Tester: input, discard or pass-thru;\n* Consumer: ending point, inbound only.\n\n\n.. code-block:: python\n\n import plumber\n \n @plumber.filter\n def upper(data):\n return data.upper()\n \n ppl = plumber.Pipeline(upper)\n output = ppl.run(\"Hey Jude, don't make it bad\")\n \n print(''.join(output))\n \"HEY JUDE, DON'T MAKE IT BAD\"\n\n\nSince the design is based on python's iteration protocol, both producers and \nconsumers are ordinary iterable objects. Transformers are implemented as \ncallables that accept a single argument, perform the processing and return the \nresult. \n\nInput data may also be checked against some preconditions in order to decide \nif the transformation should happen or be by-passed. For example:\n\n\n.. code-block:: python\n\n import plumber\n \n def is_vowel(data):\n if data not in 'aeiou':\n raise plumber.UnmetPrecondition()\n \n @plumber.filter\n @plumber.precondition(is_vowel)\n def upper(data):\n return data.upper()\n \n ppl = plumber.Pipeline(upper)\n output = ppl.run(\"Hey Jude, don't make it bad\")\n \n print(''.join(output))\n \"hEy jUdE, dOn't mAkE It bAd\"\n\n\nPrefetching\n-----------\n\nIf you think the pipes are taking too long to move data forward, \nyou can use a prefetching feature. To use it, just define the upper \nlimit of items to be pre fetched.\n\nUsing the same example as above:\n\n\n.. code-block:: python\n\n ppl = plumber.Pipeline(stripper, upper)\n transformed_data = ppl.run([\" I am the Great Cornholio!\", \"Hey Jude, don't make it bad \"], \n prefetch=2)\n \n for td in transformed_data:\n print(td)\n \n I AM THE GREAT CORNHOLIO!\n \"HEY JUDE, DON'T MAKE IT BAD\"\n\n\nBy default the prefetching mechanism is thread-based, so be careful with cpu-bound\npipelines.\n\n\nInstallation\n------------\n\nPypi (recommended):\n\n.. code-block:: bash\n\n $ pip install picles.plumber\n\n\nSource code (development version):\n\n.. code-block:: bash\n\n $ git clone https://github.com/picleslivre/plumber.git && cd plumber && python setup.py install\n\n\nUse license\n-----------\n\nThis project is licensed under FreeBSD 2-clause. See `LICENSE `_ for more details.", "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/picleslivre/plumber/", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "picles.plumber", "package_url": "https://pypi.org/project/picles.plumber/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/picles.plumber/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/picleslivre/plumber/" }, "release_url": "https://pypi.org/project/picles.plumber/0.11/", "requires_dist": null, "requires_python": null, "summary": "Simple data transformation pipeline.", "version": "0.11" }, "last_serial": 1934315, "releases": { "0.10": [ { "comment_text": "", "digests": { "md5": "790b1809345f50a53fa38c4ed228cc7c", "sha256": "734281fc6bb1de5256c319767e8726ba62f3f49f46bb0a9ed169a08eb6337aa2" }, "downloads": -1, "filename": "picles.plumber-0.10-py2-none-any.whl", "has_sig": false, "md5_digest": "790b1809345f50a53fa38c4ed228cc7c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4651, "upload_time": "2014-06-06T15:33:35", "url": "https://files.pythonhosted.org/packages/e1/cc/ee21d356292f8db347c93e541a3635cb619db9952cb6bdcba8ad039c6fd1/picles.plumber-0.10-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5ff0a12c55f8ce405f1b31460d4ee5e4", "sha256": "8ff9415dee7a6045d090bb5bb72b6a2dfa0fd8dcc7fcffbdebbf9e66409459fd" }, "downloads": -1, "filename": "picles.plumber-0.10.tar.gz", "has_sig": false, "md5_digest": "5ff0a12c55f8ce405f1b31460d4ee5e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3496, "upload_time": "2014-06-06T15:33:37", "url": "https://files.pythonhosted.org/packages/e5/20/79d7bfa1837ccdf0aae1915c90d5b125c1fe148611576e3b78d6f49de5eb/picles.plumber-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "90f0ba9be68f0a5a9c7be419dd466dc7", "sha256": "cebb5ed132f43b33be0fa14bf2ffadb2aaf14b9f26af90441840e576ba6e0ffe" }, "downloads": -1, "filename": "picles.plumber-0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "90f0ba9be68f0a5a9c7be419dd466dc7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6941, "upload_time": "2016-02-01T19:34:09", "url": "https://files.pythonhosted.org/packages/19/cd/7445ba7b97c8ac6fd934f7cda7ca5d0ad905ab4925d06629bd5f1211c0dd/picles.plumber-0.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98a736be643f1a21d63895255e9fb3db", "sha256": "dfeebfc1b37fb384846a3c2650814aed0803ad4a360a8e7195f0fc9e0c5b9a89" }, "downloads": -1, "filename": "picles.plumber-0.11.tar.gz", "has_sig": false, "md5_digest": "98a736be643f1a21d63895255e9fb3db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4919, "upload_time": "2016-02-01T19:34:20", "url": "https://files.pythonhosted.org/packages/0d/3c/932f2464d9ae4664c73f20791412a2a88d55d0f4524ce818d8635f60ef0d/picles.plumber-0.11.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "b538bb0b210e46cba24ea6b773c6de4b", "sha256": "bcc2d103f26c671ec7afea76d6f8986a710efac97bee1fcb69648c5e95837cad" }, "downloads": -1, "filename": "picles.plumber-0.9-py2-none-any.whl", "has_sig": false, "md5_digest": "b538bb0b210e46cba24ea6b773c6de4b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4638, "upload_time": "2014-05-28T13:42:23", "url": "https://files.pythonhosted.org/packages/fd/63/fb6764a82d9cf21dd627cbeb74a17c299102e9abbe949c62d98de7c8be53/picles.plumber-0.9-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2700c26d13a0587efa3cc96454cc6d13", "sha256": "8e036f70f071699d0ce43531f96be63f0bb87cc748906491acf4557a82923141" }, "downloads": -1, "filename": "picles.plumber-0.9.tar.gz", "has_sig": false, "md5_digest": "2700c26d13a0587efa3cc96454cc6d13", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3486, "upload_time": "2014-05-28T13:42:25", "url": "https://files.pythonhosted.org/packages/4b/af/6b6938678d909a144df9d539d80b14bca7b9cddd8a7ff002a535dca64da3/picles.plumber-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "90f0ba9be68f0a5a9c7be419dd466dc7", "sha256": "cebb5ed132f43b33be0fa14bf2ffadb2aaf14b9f26af90441840e576ba6e0ffe" }, "downloads": -1, "filename": "picles.plumber-0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "90f0ba9be68f0a5a9c7be419dd466dc7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6941, "upload_time": "2016-02-01T19:34:09", "url": "https://files.pythonhosted.org/packages/19/cd/7445ba7b97c8ac6fd934f7cda7ca5d0ad905ab4925d06629bd5f1211c0dd/picles.plumber-0.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "98a736be643f1a21d63895255e9fb3db", "sha256": "dfeebfc1b37fb384846a3c2650814aed0803ad4a360a8e7195f0fc9e0c5b9a89" }, "downloads": -1, "filename": "picles.plumber-0.11.tar.gz", "has_sig": false, "md5_digest": "98a736be643f1a21d63895255e9fb3db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4919, "upload_time": "2016-02-01T19:34:20", "url": "https://files.pythonhosted.org/packages/0d/3c/932f2464d9ae4664c73f20791412a2a88d55d0f4524ce818d8635f60ef0d/picles.plumber-0.11.tar.gz" } ] }