{ "info": { "author": "Oliver Cope", "author_email": "oliver@redgecko.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Environment :: Web Environment", "License :: OSI Approved :: BSD License", "Programming Language :: Python" ], "description": "Batcher\r\n-------\r\n\r\nSplits any sliceable object into batches::\r\n\r\n\t>>> from batcher import Batcher\r\n\t>>> items = list('ABCDEFGHIJ')\r\n\t>>> batcher = Batcher(items, 4)\r\n\t>>> # How many batches are available?\r\n\t>>> len(batcher)\r\n\t3\r\n\t>>> # Get contents of the first batch\r\n\t>>> list(batcher[0])\r\n\t['A', 'B', 'C', 'D']\r\n\r\nBatches look like lists but know about their context too::\r\n\r\n\t>>> batch = batcher[1]\r\n\t>>> batch\r\n\t\r\n\t>>> batcher[1].previous\r\n\t\r\n\t>>> batcher[1].next \r\n\t\r\n\t>>> batcher[2].next\r\n\tNone\r\n\r\nA common requirement in web applications is to implement a pager widget.\r\nThe range method can help when the user is viewing page **n** and we want to\r\ndisplay a range of pages centered on **n**, adjusting endpoints to keep\r\nthem in range::\r\n\r\n\t>>> items = range(100)\r\n\t>>> batcher = Batcher(items, 4)\r\n\t>>> len(batcher)\r\n\t25\r\n\t>>> # The range of 5 batches centered on the given batch\r\n\t>>> batcher[0].range(5)\r\n\t[, , , , ]\r\n\t>>> batcher[7].range(5)\r\n\t[, , , , ]\r\n\t>>> batcher[23].range(5)\r\n\t[, , , , ]\r\n\r\nIf there aren't enough batches available, the entire batch will be returned::\r\n\r\n\t>>> items = range(10)\r\n\t>>> batcher = Batcher(items, 4)\r\n\t>>> len(batcher)\r\n\t3\r\n\t>>> batcher[1].range(5)\r\n\t[, , ]\r\n\r\nBecause batches use python's slicing API to retrieve data, we can\r\ninterrogate the slice object to find out the indices of the first and last\r\nitems in a batch, useful for showing data such as \"Page 1 (items 1-10)\"::\r\n\r\n\t>>> items = range(25)\r\n\t>>> batcher = Batcher(items, 10)\r\n\t>>> batch = batcher[0]\r\n\t>>> batch.slice\r\n\tslice(0, 10, None)\r\n\t>>> \"Page %d (items %d-%d)\" % (batch.index + 1,\r\n\t... batch.slice.start + 1,\r\n\t... batch.slice.stop)\r\n\t'Page 1 (items 1-10)'\r\n\r\nNote how python's slice semantics mean that the indices are zero-based (so\r\nwe add 1 when formatting for display) and that the stop index of the slice\r\npoints to the item after the end of the series.", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "Batcher", "package_url": "https://pypi.org/project/Batcher/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/Batcher/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/Batcher/2/", "requires_dist": null, "requires_python": null, "summary": "Cut sliceable objects into batches, eg for paging display on a website", "version": "2" }, "last_serial": 732049, "releases": { "1": [ { "comment_text": "", "digests": { "md5": "1bfe9c2ef06abbe5644c68ff9f52c23e", "sha256": "d37043a8a7275e2f873361370f56258fb2434f780a4bf77cec6dbe83cc91c733" }, "downloads": -1, "filename": "Batcher-1.tar.gz", "has_sig": false, "md5_digest": "1bfe9c2ef06abbe5644c68ff9f52c23e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8352, "upload_time": "2009-12-14T13:42:56", "url": "https://files.pythonhosted.org/packages/39/29/c5bb2e2f347bf67bccbea58d841fa7e1cfd5039060ed50709926fb994363/Batcher-1.tar.gz" } ], "2": [ { "comment_text": "", "digests": { "md5": "cf65c0f1231655fc0579727f3fa5b19f", "sha256": "93311a3bf8b6a173e8f57d3a4377b8bfafd19e301c6d96002fa03f18009d0b68" }, "downloads": -1, "filename": "Batcher-2.tar.gz", "has_sig": false, "md5_digest": "cf65c0f1231655fc0579727f3fa5b19f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8651, "upload_time": "2009-12-15T12:17:29", "url": "https://files.pythonhosted.org/packages/36/ca/1985be6de356b52d3aafaad1d015c678bd68aebaa3a810d08eb4f7337682/Batcher-2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "cf65c0f1231655fc0579727f3fa5b19f", "sha256": "93311a3bf8b6a173e8f57d3a4377b8bfafd19e301c6d96002fa03f18009d0b68" }, "downloads": -1, "filename": "Batcher-2.tar.gz", "has_sig": false, "md5_digest": "cf65c0f1231655fc0579727f3fa5b19f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8651, "upload_time": "2009-12-15T12:17:29", "url": "https://files.pythonhosted.org/packages/36/ca/1985be6de356b52d3aafaad1d015c678bd68aebaa3a810d08eb4f7337682/Batcher-2.tar.gz" } ] }