{ "info": { "author": "Percipient Networks, LLC", "author_email": "support@strongarm.io", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 1.11", "Framework :: Django :: 2.0", "Framework :: Django :: 2.1", "Framework :: Django :: 2.2", "Intended Audience :: Developers", "License :: OSI Approved :: ISC License (ISCL)", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Internet", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Django QuerySetSequence\n#######################\n\n.. image:: https://travis-ci.org/percipient/django-querysetsequence.svg?branch=master\n :target: https://travis-ci.org/percipient/django-querysetsequence\n\n.. image:: https://coveralls.io/repos/github/percipient/django-querysetsequence/badge.svg?branch=master\n :target: https://coveralls.io/github/percipient/django-querysetsequence?branch=master\n\nThe ``QuerySetSequence`` wrapper helps to deal with disparate ``QuerySet``\nclasses, while treating them as a single ``QuerySet``.\n\nSupported Features\n==================\n\nListed below are features of Django's |QuerySets|_ that ``QuerySetSequence``\nimplements. The behavior should match that of ``QuerySet``, but applied across\nmultiple ``QuerySets``:\n\n.. |QuerySets| replace:: ``QuerySets``\n.. _QuerySets: https://docs.djangoproject.com/en/dev/ref/models/querysets/\n\n* Methods that take a list of fields (e.g. ``filter()``, ``exclude()``,\n ``get()``, ``order_by()``) must use fields that are common across all\n sub-``QuerySets``.\n* Relationships across related models work (e.g. ``'foo__bar'``, ``'foo'``, or\n ``'foo_id'``). syntax).\n* The sub-``QuerySets`` are evaluated as late as possible (e.g. during\n iteration, slicing, pickling, ``repr()``/``len()``/``list()``/``bool()``\n calls).\n* Public ``QuerySet`` API methods that are untested/unimplemented raise\n ``NotImplementedError``.\n\n.. Auto-generated content, run python gen_docs.py to generate this.\n.. ATTRIBUTES_TABLE_START\n.. |check| unicode:: U+2713\n.. |xmark| unicode:: U+2717\n\n``QuerySet`` API implemented by ``QuerySetSequence``\n----------------------------------------------------\n\n.. list-table:: Methods that return new ``QuerySets``\n :widths: 15 10 30\n :header-rows: 1\n\n * - Method\n - Implemented?\n - Notes\n\n * - |filter|_\n - |check|\n - See [1]_ for information on the ``QuerySet`` lookup: ``'#'``.\n * - |exclude|_\n - |check|\n - See [1]_ for information on the ``QuerySet`` lookup: ``'#'``.\n * - |annotate|_\n - |check|\n -\n * - |order_by|_\n - |check|\n - Does not support random ordering (e.g. ``order_by('?')``). See [1]_ for\n information on the ``QuerySet`` lookup: ``'#'``.\n * - |reverse|_\n - |check|\n -\n * - |distinct|_\n - |xmark|\n -\n * - |values|_\n - |xmark|\n -\n * - |values_list|_\n - |xmark|\n -\n * - |dates|_\n - |xmark|\n -\n * - |datetimes|_\n - |xmark|\n -\n * - |none|_\n - |check|\n -\n * - |all|_\n - |check|\n -\n * - |union|_\n - |xmark|\n -\n * - |intersection|_\n - |xmark|\n -\n * - |difference|_\n - |xmark|\n -\n * - |select_related|_\n - |check|\n -\n * - |prefetch_related|_\n - |check|\n -\n * - |extra|_\n - |check|\n -\n * - |defer|_\n - |check|\n -\n * - |only|_\n - |check|\n -\n * - |using|_\n - |check|\n -\n * - |select_for_update|_\n - |xmark|\n -\n * - |raw|_\n - |xmark|\n -\n\n.. list-table:: Operators that return new ``QuerySets``\n :widths: 15 10 30\n :header-rows: 1\n\n * - Operator\n - Implemented?\n - Notes\n\n * - |AND (&)|_\n - |check|\n - A ``QuerySetSequence`` can be combined with a ``QuerySet``. The\n ``QuerySets`` in the ``QuerySetSequence`` are filtered to ones matching\n the same ``Model``. Each of those is ANDed with the other ``QuerySet``.\n * - |OR (\\|)|_\n - |check|\n - A ``QuerySetSequence`` can be combined with a ``QuerySet`` or\n ``QuerySetSequence``. When combining with a ``QuerySet``, it is added to\n the ``QuerySetSequence``. Combiningg with another ``QuerySetSequence``\n adds together the two underlying sets of ``QuerySets``.\n\n.. list-table:: Methods that do not return ``QuerySets``\n :widths: 15 10 30\n :header-rows: 1\n\n * - Method\n - Implemented?\n - Notes\n\n * - |get|_\n - |check|\n - See [1]_ for information on the ``QuerySet`` lookup: ``'#'``.\n * - |create|_\n - |xmark|\n - Cannot be implemented in ``QuerySetSequence``.\n * - |get_or_create|_\n - |xmark|\n - Cannot be implemented in ``QuerySetSequence``.\n * - |update_or_create|_\n - |xmark|\n - Cannot be implemented in ``QuerySetSequence``.\n * - |bulk_create|_\n - |xmark|\n - Cannot be implemented in ``QuerySetSequence``.\n * - |count|_\n - |check|\n -\n * - |in_bulk|_\n - |xmark|\n - Cannot be implemented in ``QuerySetSequence``.\n * - |iterator|_\n - |check|\n -\n * - |latest|_\n - |check|\n - If no fields are given, ``get_latest_by`` on each model is required to\n be identical.\n * - |earliest|_\n - |check|\n - See the docuemntation for ``latest()``.\n * - |first|_\n - |check|\n - If no ordering is set this is essentially the same as calling\n ``first()`` on the first ``QuerySet``, if there is an ordering, the\n result of ``first()`` for each ``QuerySet`` is compared and the \"first\"\n value is returned.\n * - |last|_\n - |check|\n - See the documentation for ``first()``.\n * - |aggregate|_\n - |xmark|\n -\n * - |exists|_\n - |check|\n -\n * - |update|_\n - |check|\n -\n * - |delete|_\n - |check|\n -\n * - |as_manager|_\n - |check|\n -\n * - |explain|_\n - |check|\n - Only available on Django >= 2.1.\n\n.. list-table:: Additional methods specific to ``QuerySetSequence``\n :widths: 15 30\n :header-rows: 1\n\n * - Method\n - Notes\n\n * - |get_querysets|\n - Returns the list of ``QuerySet`` objects that comprise the sequence.\n Note, if any methods have been called which modify the\n ``QuerySetSequence``, the ``QuerySet`` objects returned by this\n method will be similarly modified. The order of the ``QuerySet``\n objects within the list is not guaranteed.\n\n.. |filter| replace:: ``filter()``\n.. _filter: https://docs.djangoproject.com/en/dev/ref/models/querysets/#filter\n.. |exclude| replace:: ``exclude()``\n.. _exclude: https://docs.djangoproject.com/en/dev/ref/models/querysets/#exclude\n.. |annotate| replace:: ``annotate()``\n.. _annotate: https://docs.djangoproject.com/en/dev/ref/models/querysets/#annotate\n.. |order_by| replace:: ``order_by()``\n.. _order_by: https://docs.djangoproject.com/en/dev/ref/models/querysets/#order_by\n.. |reverse| replace:: ``reverse()``\n.. _reverse: https://docs.djangoproject.com/en/dev/ref/models/querysets/#reverse\n.. |distinct| replace:: ``distinct()``\n.. _distinct: https://docs.djangoproject.com/en/dev/ref/models/querysets/#distinct\n.. |values| replace:: ``values()``\n.. _values: https://docs.djangoproject.com/en/dev/ref/models/querysets/#values\n.. |values_list| replace:: ``values_list()``\n.. _values_list: https://docs.djangoproject.com/en/dev/ref/models/querysets/#values-list\n.. |dates| replace:: ``dates()``\n.. _dates: https://docs.djangoproject.com/en/dev/ref/models/querysets/#dates\n.. |datetimes| replace:: ``datetimes()``\n.. _datetimes: https://docs.djangoproject.com/en/dev/ref/models/querysets/#datetimes\n.. |none| replace:: ``none()``\n.. _none: https://docs.djangoproject.com/en/dev/ref/models/querysets/#none\n.. |all| replace:: ``all()``\n.. _all: https://docs.djangoproject.com/en/dev/ref/models/querysets/#all\n.. |union| replace:: ``union()``\n.. _union: https://docs.djangoproject.com/en/dev/ref/models/querysets/#union\n.. |intersection| replace:: ``intersection()``\n.. _intersection: https://docs.djangoproject.com/en/dev/ref/models/querysets/#intersection\n.. |difference| replace:: ``difference()``\n.. _difference: https://docs.djangoproject.com/en/dev/ref/models/querysets/#difference\n.. |select_related| replace:: ``select_related()``\n.. _select_related: https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related\n.. |prefetch_related| replace:: ``prefetch_related()``\n.. _prefetch_related: https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-related\n.. |extra| replace:: ``extra()``\n.. _extra: https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra\n.. |defer| replace:: ``defer()``\n.. _defer: https://docs.djangoproject.com/en/dev/ref/models/querysets/#defer\n.. |only| replace:: ``only()``\n.. _only: https://docs.djangoproject.com/en/dev/ref/models/querysets/#only\n.. |using| replace:: ``using()``\n.. _using: https://docs.djangoproject.com/en/dev/ref/models/querysets/#using\n.. |select_for_update| replace:: ``select_for_update()``\n.. _select_for_update: https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-for-update\n.. |raw| replace:: ``raw()``\n.. _raw: https://docs.djangoproject.com/en/dev/ref/models/querysets/#raw\n\n.. |AND (&)| replace:: AND (``&``)\n.. _AND (&): https://docs.djangoproject.com/en/dev/ref/models/querysets/#and\n.. |OR (|)| replace:: OR (``|``)\n.. _OR (\\|): https://docs.djangoproject.com/en/dev/ref/models/querysets/#or\n\n.. |get| replace:: ``get()``\n.. _get: https://docs.djangoproject.com/en/dev/ref/models/querysets/#get\n.. |create| replace:: ``create()``\n.. _create: https://docs.djangoproject.com/en/dev/ref/models/querysets/#create\n.. |get_or_create| replace:: ``get_or_create()``\n.. _get_or_create: https://docs.djangoproject.com/en/dev/ref/models/querysets/#get-or-create\n.. |update_or_create| replace:: ``update_or_create()``\n.. _update_or_create: https://docs.djangoproject.com/en/dev/ref/models/querysets/#update-or-create\n.. |bulk_create| replace:: ``bulk_create()``\n.. _bulk_create: https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-create\n.. |count| replace:: ``count()``\n.. _count: https://docs.djangoproject.com/en/dev/ref/models/querysets/#count\n.. |in_bulk| replace:: ``in_bulk()``\n.. _in_bulk: https://docs.djangoproject.com/en/dev/ref/models/querysets/#in_bulk\n.. |iterator| replace:: ``iterator()``\n.. _iterator: https://docs.djangoproject.com/en/dev/ref/models/querysets/#iterator\n.. |latest| replace:: ``latest()``\n.. _latest: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest\n.. |earliest| replace:: ``earliest()``\n.. _earliest: https://docs.djangoproject.com/en/dev/ref/models/querysets/#earliest\n.. |first| replace:: ``first()``\n.. _first: https://docs.djangoproject.com/en/dev/ref/models/querysets/#first\n.. |last| replace:: ``last()``\n.. _last: https://docs.djangoproject.com/en/dev/ref/models/querysets/#last\n.. |aggregate| replace:: ``aggregate()``\n.. _aggregate: https://docs.djangoproject.com/en/dev/ref/models/querysets/#aggregate\n.. |exists| replace:: ``exists()``\n.. _exists: https://docs.djangoproject.com/en/dev/ref/models/querysets/#exists\n.. |update| replace:: ``update()``\n.. _update: https://docs.djangoproject.com/en/dev/ref/models/querysets/#update\n.. |delete| replace:: ``delete()``\n.. _delete: https://docs.djangoproject.com/en/dev/ref/models/querysets/#delete\n.. |as_manager| replace:: ``as_manager()``\n.. _as_manager: https://docs.djangoproject.com/en/dev/ref/models/querysets/#as-manager\n.. |explain| replace:: ``explain()``\n.. _explain: https://docs.djangoproject.com/en/dev/ref/models/querysets/#explain\n\n.. |get_querysets| replace:: ``get_querysets()``\n\n.. [1] ``QuerySetSequence`` supports a special field lookup that looks up the\n index of the ``QuerySet``, this is represented by ``'#'``. This can be\n used in any of the operations that normally take field lookups (i.e.\n ``filter()``, ``exclude()``, and ``get()``), as well as ``order_by()``.\n\n A few examples are below:\n\n .. code-block:: python\n\n # Order first by QuerySet, then by the value of the 'title' field.\n QuerySetSequence(...).order_by('#', 'title')\n\n # Filter out the first QuerySet.\n QuerySetSequence(...).filter(**{'#__gt': 0})\n\n .. note::\n\n Ordering first by ``QuerySet`` allows for a more optimized code path\n when iterating over the entries.\n\n .. warning::\n\n Not all lookups are supported when using ``'#'`` (some lookups\n simply don't make sense; others are just not supported). The\n following are allowed:\n\n * ``exact``\n * ``iexact``\n * ``contains``\n * ``icontains``\n * ``in``\n * ``gt``\n * ``gte``\n * ``lt``\n * ``lte``\n * ``startswith``\n * ``istartswith``\n * ``endswith``\n * ``iendswith``\n * ``range``\n\nRequirements\n============\n\n* Python (2.7, 3.5, 3.6, 3.7)\n* Django (1.11, 2.0, 2.1, 2.2)\n* (Optionally) `Django REST Framework`_ (3.6.3+, 3.7, 3.8, 3.9)\n\n.. _Django REST Framework: http://www.django-rest-framework.org/\n\nInstallation\n============\n\nInstall the package using pip.\n\n.. code-block:: bash\n\n pip install --upgrade django-querysetsequence\n\nUsage\n=====\n\n.. code-block:: python\n\n # Import QuerySetSequence\n from queryset_sequence import QuerySetSequence\n\n # Create QuerySets you want to chain.\n from .models import SomeModel, OtherModel\n\n # Chain them together.\n query = QuerySetSequence(SomeModel.objects.all(), OtherModel.objects.all())\n\n # Use query as if it were a QuerySet! E.g. in a ListView.\n\nExample\n=======\n\n.. code-block:: python\n\n class Author(models.Model):\n name = models.CharField(max_length=50)\n\n class Meta:\n ordering = ['name']\n\n def __str__(self):\n return self.name\n\n\n class Article(models.Model):\n title = models.CharField(max_length=100)\n author = models.ForeignKey(Author)\n\n def __str__(self):\n return \"%s by %s\" % (self.title, self.author)\n\n\n class Book(models.Model):\n title = models.CharField(max_length=50)\n author = models.ForeignKey(Author)\n release = models.DateField(auto_now_add=True)\n\n def __str__(self):\n return \"%s by %s\" % (self.title, self.author)\n\n # Create some data.\n alice = Author.objects.create(name='Alice')\n article = Article.objects.create(title='Dancing with Django', author=alice)\n\n bob = Author.objects.create(name='Bob')\n article = Article.objects.create(title='Django-isms', author=bob)\n article = Book.objects.create(title='Biography', author=bob)\n\n # Create some QuerySets.\n books = Book.objects.all()\n articles = Article.objects.all()\n\n # Combine them into a single iterable.\n published_works = QuerySetSequence(books, articles)\n\n # Find Bob's titles.\n bob_works = published_works.filter(author=bob)\n # Still an iterable.\n print([w.title for w in bob_works]) # prints: ['Biography', 'Django-isms']\n\n # Alphabetize the QuerySet.\n published_works = published_works.order_by('title')\n print([w.title for w in published_works]) # prints ['Biography', 'Dancing with Django', 'Django-isms']\n\nDjango REST Framework integration\n=================================\n\ndjango-querysetsequence comes with a custom ``CursorPagination`` class that\nhelps integration with Django REST Framework. It is optimized to iterate over a\n``QuerySetSequence`` first by ``QuerySet`` and then by the normal ``ordering``\nconfiguration. This uses the optimized code-path for iteration that avoids\ninterleaving the individual ``QuerySets``. For example:\n\n.. code-block:: python\n\n from queryset_sequence.pagination import SequenceCursorPagination\n\n class PublicationPagination(SequenceCursorPagination):\n ordering = ['author', 'title']\n\n class PublicationViewSet(viewsets.ModelViewSet):\n pagination_class = PublicationPagination\n\n def get_queryset(self):\n # This will return all Books first, then all Articles. Each of those\n # is individually ordered by ``author``, then ``title``.\n return QuerySetSequence(Book.objects.all(), Article.objects.all())\n\nAttribution\n===========\n\nThis is based on a few DjangoSnippets that had been going around:\n\n* Originally from https://www.djangosnippets.org/snippets/1103/\n* Modified version from https://djangosnippets.org/snippets/1253/\n* Upgraded version from https://djangosnippets.org/snippets/1933/\n* Updated version from `django-ko-demo from The Atlantic `_\n\n\nContribute\n==========\n\n* Check for open issues or open a fresh issue to start a discussion around a\n feature idea or a bug.\n* Fork the repository on GitHub to start making your changes.\n* Write a test which shows that the bug was fixed or that the feature works as\n expected.\n* Send a pull request and bug the maintainer until it gets merged and published.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/percipient/django-querysetsequence", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/percipient/django-querysetsequence", "keywords": "django,queryset,chain,multi,multiple,iterable", "license": "ISC", "maintainer": "", "maintainer_email": "", "name": "django-querysetsequence", "package_url": "https://pypi.org/project/django-querysetsequence/", "platform": "", "project_url": "https://pypi.org/project/django-querysetsequence/", "project_urls": { "Download": "https://github.com/percipient/django-querysetsequence", "Homepage": "https://github.com/percipient/django-querysetsequence" }, "release_url": "https://pypi.org/project/django-querysetsequence/0.11/", "requires_dist": [ "django (>=1.11)" ], "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "summary": "Chain together multiple (disparate) QuerySets to treat them as a single QuerySet.", "version": "0.11" }, "last_serial": 5189994, "releases": { "0.1": [], "0.10": [ { "comment_text": "", "digests": { "md5": "c8a8bfdf230e46bd38b2b39909a7430b", "sha256": "3f1ff8ec5a08b4e1a3c2f95b7d64e8e780e2729425317eaeb7403eca39ed0270" }, "downloads": -1, "filename": "django_querysetsequence-0.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c8a8bfdf230e46bd38b2b39909a7430b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28332, "upload_time": "2018-10-09T21:39:16", "url": "https://files.pythonhosted.org/packages/14/bd/99bce86ec46adc33d6ee18003324915fb35980e3a40c3ad568158613201f/django_querysetsequence-0.10-py2.py3-none-any.whl" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "af6f74607e7911641fd28ff01795947e", "sha256": "3d6f11f983daa8e82a0ebdfa0fb853ed9ee959fbacbe7f74b66280424803d72d" }, "downloads": -1, "filename": "django_querysetsequence-0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af6f74607e7911641fd28ff01795947e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 29283, "upload_time": "2019-04-25T22:13:11", "url": "https://files.pythonhosted.org/packages/60/4a/679beec983b93feb5ba5a321e692eaf2bd571ac7be0d812fa54931e5ab9c/django_querysetsequence-0.11-py2.py3-none-any.whl" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "9df8af99fb2af53c80eaf40a7c55e091", "sha256": "6f180dddb947a23984f5fbb33625a58bd168abdba92d760d3d7c0a337295784d" }, "downloads": -1, "filename": "django_querysetsequence-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9df8af99fb2af53c80eaf40a7c55e091", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9871, "upload_time": "2016-01-11T16:13:02", "url": "https://files.pythonhosted.org/packages/8b/c8/a3d684ba2e9c0e5096630f8bd28e122e6fee016481e56da6a80c341bfc37/django_querysetsequence-0.2.2-py2.py3-none-any.whl" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "d05a6ccf5446fa5270aae09621cb3228", "sha256": "2337cbbf6ce036c16d04b3751e3277e8e064a789acb96564b4278c049546998e" }, "downloads": -1, "filename": "django_querysetsequence-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d05a6ccf5446fa5270aae09621cb3228", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 9870, "upload_time": "2016-01-11T17:32:01", "url": "https://files.pythonhosted.org/packages/cf/69/5e36eaf49a3393a6441947154e39560d84e758107e2e21fb6ae8086241a8/django_querysetsequence-0.2.3-py2.py3-none-any.whl" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "7817e7d93b72e4c42f4c93b0a2a35935", "sha256": "be68be81452c0347ce6b5ab6398e3e831cbe4eb6ed27f2fa4dbb21b8565c33d3" }, "downloads": -1, "filename": "django_querysetsequence-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7817e7d93b72e4c42f4c93b0a2a35935", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11069, "upload_time": "2016-01-21T16:52:55", "url": "https://files.pythonhosted.org/packages/08/fb/75135f864f91227ad6da24d2739b39fce593087dfb25aab0465de7c6d033/django_querysetsequence-0.2.4-py2.py3-none-any.whl" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "c4c43a78f8548253b8fe5112c7f6ad20", "sha256": "9a4fee876867318294f3fb16f38f929e2c1b60cd4512c4cd592f9762b76b901c" }, "downloads": -1, "filename": "django_querysetsequence-0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c4c43a78f8548253b8fe5112c7f6ad20", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13686, "upload_time": "2016-01-29T13:36:42", "url": "https://files.pythonhosted.org/packages/dc/51/08f62f0fc5aa8d8065ef686004a9588b3003a20cc5a55819f5c0790d4a09/django_querysetsequence-0.3-py2.py3-none-any.whl" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "21544eb479f22543e7f11f61eeec1b41", "sha256": "e17c83f325c587d661b75c0892ed2bde30b12a9d7e9a72f2be84825951f176de" }, "downloads": -1, "filename": "django_querysetsequence-0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "21544eb479f22543e7f11f61eeec1b41", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13707, "upload_time": "2016-02-03T19:50:24", "url": "https://files.pythonhosted.org/packages/ca/d0/5b07671a2d2b27d98beabc3fc15f29cc5a79890cf1ba3c20afc290657a40/django_querysetsequence-0.4-py2.py3-none-any.whl" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "53aaa460ab1facc895b13f63c6c6e8c6", "sha256": "3bc9a2802dac9d9d02398ae585bbfb0663e17e7d9a4cb0ea2c57ae0676353c3e" }, "downloads": -1, "filename": "django_querysetsequence-0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "53aaa460ab1facc895b13f63c6c6e8c6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13526, "upload_time": "2016-02-21T13:26:09", "url": "https://files.pythonhosted.org/packages/4d/bd/920e837620f884c4113c4ef66de134d1cdec66754e3ded771329f4c42331/django_querysetsequence-0.5-py2.py3-none-any.whl" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "39bba6201921cfecc9e89af4119643bc", "sha256": "90f129ccb627d891ab2ea32a3d6852b2a6f498f18d44c9a6bcd716698458b4f5" }, "downloads": -1, "filename": "django_querysetsequence-0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "39bba6201921cfecc9e89af4119643bc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13863, "upload_time": "2016-06-07T21:47:21", "url": "https://files.pythonhosted.org/packages/22/c8/d9afa4d8479258b24b23c3e4eecbce24d530af32f7c5d28d5e9de2c46621/django_querysetsequence-0.6-py2.py3-none-any.whl" } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "73a88a11b557084e44ac16deddfe54b3", "sha256": "75937fd4c1320ea4c7a3a884d8b5d4b5fc98ec842b2f1e878c7e6ad960e51ce1" }, "downloads": -1, "filename": "django_querysetsequence-0.6.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "73a88a11b557084e44ac16deddfe54b3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13899, "upload_time": "2016-08-03T16:48:15", "url": "https://files.pythonhosted.org/packages/49/2d/e2ff940e25c58aa749b70e33efd26a5e53d2ae24c1afe4ce1f8584cace95/django_querysetsequence-0.6.1-py2.py3-none-any.whl" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "e6e076b2f168c2b7e58d04aca19da5f0", "sha256": "d7fc36ccdba8b3c77b3be51dd9e2aabc5b6bd5a1484da35f18221815dfc84769" }, "downloads": -1, "filename": "django_querysetsequence-0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e6e076b2f168c2b7e58d04aca19da5f0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33590, "upload_time": "2016-10-20T19:42:14", "url": "https://files.pythonhosted.org/packages/31/08/224ba3f01711ea081d0a436fbb36b9aec77f63c5293512e48049bc31e1e4/django_querysetsequence-0.7-py2.py3-none-any.whl" } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "63115bd5eb0dd175d731139456bb5e20", "sha256": "5cd9ba65e5240ed4e6e5dbcbe177247419cc9561961acdfb40bbd68c4d1ffe2b" }, "downloads": -1, "filename": "django_querysetsequence-0.7.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "63115bd5eb0dd175d731139456bb5e20", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33760, "upload_time": "2017-03-31T12:50:44", "url": "https://files.pythonhosted.org/packages/fe/a4/9e7ba5ffc1ad252c3146be1d54d5cf484e7f2525866e922b337d313ccc53/django_querysetsequence-0.7.1-py2.py3-none-any.whl" } ], "0.7.2": [ { "comment_text": "", "digests": { "md5": "023c1558d80d2f3a656f9f81ce7d6d0e", "sha256": "a73df105b9d6a5b078bf187ff7416720a79a1b1159e07c9040e6020e9770f1ff" }, "downloads": -1, "filename": "django_querysetsequence-0.7.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "023c1558d80d2f3a656f9f81ce7d6d0e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33890, "upload_time": "2017-04-04T19:03:12", "url": "https://files.pythonhosted.org/packages/78/9b/0b18f63a97a60c07bd93bca465e78ff0121b812d8c46983190688a1ec4e8/django_querysetsequence-0.7.2-py2.py3-none-any.whl" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "8978a7d81f5665a57667d3c51abc7cfa", "sha256": "55b696d0fa3ac9cf25543b36b567fc0a521e0b73efdc0d11469b2b64b423df78" }, "downloads": -1, "filename": "django_querysetsequence-0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8978a7d81f5665a57667d3c51abc7cfa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21117, "upload_time": "2017-09-05T15:12:30", "url": "https://files.pythonhosted.org/packages/0f/67/3150912cbaa32489f809b060b94487665066e94fe2c32469278b26b2e08b/django_querysetsequence-0.8-py2.py3-none-any.whl" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "e2ee86413c8944a5203e70ab93b841d2", "sha256": "002c67f6a87c1ef97ceb6ccf33bce8af3d33ce1974c5a0ab0788888b0787a364" }, "downloads": -1, "filename": "django_querysetsequence-0.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e2ee86413c8944a5203e70ab93b841d2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24195, "upload_time": "2018-09-20T16:17:48", "url": "https://files.pythonhosted.org/packages/53/22/8d374ace5a3a817e3c3981bf68c7baa671d4d70b83550c46766c2a237104/django_querysetsequence-0.9-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "af6f74607e7911641fd28ff01795947e", "sha256": "3d6f11f983daa8e82a0ebdfa0fb853ed9ee959fbacbe7f74b66280424803d72d" }, "downloads": -1, "filename": "django_querysetsequence-0.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "af6f74607e7911641fd28ff01795947e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*", "size": 29283, "upload_time": "2019-04-25T22:13:11", "url": "https://files.pythonhosted.org/packages/60/4a/679beec983b93feb5ba5a321e692eaf2bd571ac7be0d812fa54931e5ab9c/django_querysetsequence-0.11-py2.py3-none-any.whl" } ] }