{ "info": { "author": "Monwara LLC", "author_email": "branko@monwara.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 2 - Pre-Alpha", "Environment :: Web Environment", "Framework :: Django", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License" ], "description": "================\nDjango URL tools\n================\n\n------------------------------------------------------\nDjango helper tools for dealing with URLs in templates\n------------------------------------------------------\n\n.. contents::\n\nOverview\n========\n\nDjango URL tools are context processors, and template tags that help you deal\nwith URL manipulations in templates. The heavy lifting is done by the\n``url_tools.helper.UrlHelper`` class which wraps around ``urllib``,\n``urlparse``, and Django's ``QueryDict`` to provide facilities for parsing and\nmanipulating URLs.\n\nInstallation\n============\n\nSimply install the ``django-url-tools`` package using ``easy_install`` or\n``pip``::\n\n pip install django-url-tools\n\nConfiguring your Django project\n===============================\n\nTo use the context processor, add the following to the middlewares stack::\n\n TEMPLATE_CONTEXT_PROCESSORS = (\n ...\n 'url_tools.context_processors.current_url',\n )\n\nIf you want to use the template tags, add ``url_tools`` to installed apps::\n\n INSTALLED_APPS = (\n ...\n 'url_tools',\n )\n\nUrlHelper class\n===============\n\n``UrlHelper`` class implements all methods for manipulating URLs that are used\nin other parts of this app. You can also use this class directly by importing\nit from the ``helper`` module::\n\n from url_tools.helper import UrlHelper\n\n``UrlHelper`` constructor accepts only one argument, which is the full path of\nthe URL you want to manipulate. Although we can technically make ``UrlHelper``\ndeal with full absolute URLs, we have opted to implement only methods for\ndealing with paths instead. Therefore, if you pass UrlHelper an full URL with\nscheme, host, port, and user credentials, it would still only use the path,\nquery parameters, and the fragment identifiers.\n\nYou can also pass an instance of ``UrlHelper`` class to the constructor if you\nneed to do so.\n\nThe class has following properties:\n\n+ ``path``: URL's path without query string and fragment identifier\n+ ``fragment``: URL's fragment identifier (without the pound character ``#``)\n+ ``query_dict``: ``QueryDict`` instance containing the URL's query parameters\n+ ``query``: similar to ``query_dict`` but also does more when assigning\n+ ``query_string``: URL's query string\n+ ``hash``: MD5 hexdigest of the full path including query parameters\n\nUrlHelper.path\n--------------\n\nThis is a simple string property containing the URl's path. For example, in an\nURL ``'/foo/bar?baz=1#boo'``, the property contains ``'/foo/bar'``.\n\nUrlHelper.fragment\n------------------\n\nContains the fragment identifier. In the URL ``'/foo/bar?baz=1#boo'``, this\nproperty contains ``'foo'``.\n\nUrlHelper.query_dict\n--------------------\n\nContains the query parameters parsed from the URL in form of\n``django.http.request.QueryDict`` instance. You can read more about the\n``QueryDict`` API in `Django documentation on QueryDict`_.\n\nUrlHelper.query\n---------------\n\nThis is a property returns the ``UrlHelper.query_dict`` when read, but\noverrides it when assigend a normal dictionary or a string. For example::\n\n u = UrlHelper('/foo/bar')\n u.query = 'foo=1&bar=2'\n # or\n u.query = dict(foo=1, bar=2)\n\nBoth above assignment work.\n\nUrlHelper.query_string\n----------------------\n\nThis property returns a query string when read, and behaves the same way as the\nquery property when assigning a string. However, you cannot assign dictionaries\nto this property. ::\n\n u = UrlHelper('/foo/bar')\n u.query_string = 'foo=1&bar=2' # this works\n u.query_string = dict(foo=1, bar=2) # but this doesn't\n\nUrlHelper.hash\n--------------\n\nReturns the MD5 hexdigest of the full path including query parameters. This can\nbe useful for use with caching and other situations where we need to\ndifferentiate same paths with different query parameters. ::\n\n u = UrlHelper('/foo/bar')\n u.query = dict(foo=1) # URL is now '/foo/bar?foo=1'\n u.hash # returns '06f0a42bdd474f053fb1343165a31d42'\n\nUrlHelper.get_query_string(**kwargs)\n------------------------------------\n\nThis method returns the query string using ``QueryDict``'s ``urlencode()``\nmethod. Any keyword parameters you pass to this method are forwarded to the\n``urlencode()`` method. Currently, the only keyword argument is ``safe`` which\ninstructs the method to not escape specified characters.\n\nUrlHelper.get_query_data()\n--------------------------\n\nReturns the ``UrlHelper.query_dict`` property. This methods exist mostly to\nhelp customize the behavior of ``UrlHelper.query`` in subclasses, since the\ngetter calls this method instead of returning the ``query_dict`` property\ndirectly.\n\nUrlHelper.update_query_data(**kwargs)\n-------------------------------------\n\nThis method takes any number of keyword arguments and updates the\n``UrlHelper.query_dict`` instance. Since, unlike Python dictionary, each\n``QueryDict`` key can have multple values, you can pass multiple values as\nPython iterables such as lists or tuples. For example::\n\n u = UrlHelper('/foo')\n u.update_query_data(bar=[1, 2, 3])\n u.query_string # returns 'bar=1&bar=2&bar=3'\n\nUrlHelper.overload_params(**kwargs)\n-----------------------------------\n\nThis method adds query parameters. As its name suggests, it will not update\nexisting keys, but instead add new values for the existing parameters. Here is\na simple example::\n\n u = UrlHelper('/foo')\n u.overload_params(bar=1) # /foo?bar=1\n u.overload_params(bar=2) # /foo?bar=1&bar=2\n\nUrlHelper.toggle_params(**kwargs)\n-----------------------------------\n\nThis method adds or removes query parameters depending on whether they\nalready exist. It looks for both a matching parameter and value, and\nadds new parameters using ``UrlHelper.overload_params``. Here is\na simple example::\n\n u = UrlHelper('/foo')\n u.toggle_params(bar=1) # /foo?bar=1\n u.toggle_params(bar=1, foo=2) # /foo?foo=2\n u.toggle_params(bar=1, bar=2) # /foo?bar=1&bar=2&foo=2\n \nUrlHelper.get_path()\n--------------------\n\nReturns the ``UrlHelper.path`` property. This method exist to help\ncustomization of ``UrlHelper.get_full_path()`` method in subclasses. Other than\nthat, it's the same as using the ``path`` property.\n\nUrlHelper.get_full_path(**kwargs)\n---------------------------------\n\nReturns the full path with query string and fragment identifier (if any). The\nkeyword arguments passed to this function are passed onto \n``UrlHelper.get_query_string()`` method, and therefore to\n``QueryDict.urlencode()`` method.\n\nUrlHelper.get_full_quoted_path(**kwargs)\n----------------------------------------\n\nSame as ``UrlHelper.get_full_path()`` method, but returns the full path quoted\nso that it can be used as an URL parameter value.\n\nUrlHelper.del_param(param)\n--------------------------\n\nDelete a single query parameter. ::\n\n u = UrlHelper('/foo?bar=1&baz=2')\n u.del_param('baz')\n u.get_full_path() # returns '/foo?bar=1'\n\nUrlHelper.del_params(*params, **kwargs)\n---------------------------------------\n\nDelete multiple parameters. If no parameters are specified, _all_ parameters\nare removed. You can also specify a set of key-value pairs to remove specific\nparameters with specified _values_. Here are a few examples::\n\n u = UrlHelper('/foo?bar=1&baz=2&foo=3')\n u.del_params('foo', 'bar')\n u.get_full_path() # returns '/foo?baz=2'\n\n u = UrlHelper('/foo?bar=1&baz=2&foo=3')\n u.del_params()\n u.get_full_path() # returns '/foo'\n\n u = UrlHelper('/foo?bar=1&bar=2')\n u.del_params(bar=2)\n u.get_full_path() # returns '/foo?bar=1'\n\nContextProcessors\n=================\n\ncurrent_url\n-----------\n\nThe ``current_url`` context processor will add a new variable to the template's\ncontext. This variable is called ``current_url``, and it's an ``UrlHelper``\ninstance. Therefore, this variable has all the properties and methods of the\n``UrlHelper`` class. For instance, if we are currently on ``/foo/bar?baz=1``\npath, you can do the following in a template::\n\n {{ current_url.query_string }} {# renders `baz=1` #}\n {{ current_url.get_path }} {# renders `/foo/bar` #}\n\nand so on. The variable itself renders as full relative path with query string\nand fragment identifier (identical to output of ``UrlHelper.get_full_path()``\nmethod).\n\nTemplate tags\n=============\n\nTo use the template tags, first load the ``urls`` library::\n\n {% load urls %}\n\nURL tools currently has only one template tag, which is an assignment tag.\n\n{% add_params %}\n----------------\n\nThis template tag outputs a path with query string parameters given as keyword\narguments. For instance, if we are on a page at ``/foo``, we can use this tag::\n\n {% add_params request.get_full_path foo='bar' %}\n\nand the output would be::\n\n /foo?foo=bar\n\nExisting URL parameters are overridden by the ones specified as keyword\narguments.\n\n{% overload_params %}\n---------------------\n\nSimilar to ``{% add_params %}`` tag, except that it does not update existing\nparameters but overloads them with new values. For example, if we are on a\npage at ``/foo?bar=1``, we can use this tag like so::\n\n {% overload_params request.get_full_path bar=2 %}\n\nand the output would be::\n\n /foo?bar=1&bar=2\n\n{% del_params %}\n----------------\n\nThis tag outputs a path stripped of specified parameters, or all query \nparameters if none are specified. If you use keyword arguments, only the\nspecified name-value pairs will be removed.\n\nFor example, if we are on the ``/foo?bar=1&bar=2&baz=2`` URL::\n\n {% del_param request.get_full_path 'bar' %}\n\noutputs::\n\n /foo?baz=2\n\nand ::\n\n {% del_params request.get_full_path %}\n\noutputs::\n\n /foo\n\nFinally::\n\n {% del_params request.get_full_path bar=2 %}\n\noutputs::\n\n /foo?bar=1&baz=2\n\n{% toggle_params %}\n---------------------\n\nThis tag adds or removes parameters, depending on whether the parameter and\nvalue exists. For example, if we are on a page at ``/foo?bar=1``, we can \ntoggle the state of ``bar=1`` using::\n\n {% toggle_params request.get_full_path bar=1 %}\n\nand the output would be::\n\n /foo\n \nIf we are on a page at ``/foo``, then the output of would be::\n\n /foo?bar=1\n \nMultiple parameters and values can be used. For example, on a page at\n``/foo?bar=1&foo=2``, parameters can be toggled like this::\n\n {% toggle_params request.get_full_path bar=3 foo=2 foo=3 %}\n \nTo give::\n\n /foo?bar=1&bar=3&foo=3\n\n{% url_params %}\n----------------\n\nThis tag is used as an assignment tag. Its first argument is an URL, followed\nby any number of keyword arguments that represent the URL parameters. For\nexample, if we are requesting a page on ``'/foo'`` path, and do this::\n\n {% url_params request.get_full_path foo='bar' as new_url %}\n\nWe can use the ``new_url`` variable from that point on, that represents the\n``/foo?foo=bar`` URL. To use this with your configured URLs, you can use the\nbuilt-in ``url`` tag::\n\n {% url 'foo' as foo_url %}\n {% url_arams foo_url foo='bar' as foo_url %}\n\nIf the reverse match for ``'foo'`` is, say, ``'/foo'``, then the ``foo_url``\nvariable will, predictably, contain ``'/foo?foo=bar'``.\n\nThis tag will override existing parameters rather than adding new values for\nexisting keywords. Therefore, you can safely use it to set URL parameters\nwhether they exist or not. This is typically useful when you are building URLs\nfor controls like pagers. Regardless of whether there is a ``page`` parameter\nor not, setting it with ``url_params`` tag will correctly set the parameter to\ndesired value::\n\n {% url_params current_url page=2 %}\n {# this works for both ``/foo?page=1`` and just ``/foo`` #}\n\nTemplate filters\n================\n\nURL tools also include filters for manipulating data that will be used as part\nof URLs. To use them, you need to load the ``urls`` library first::\n\n {% load urls %}\n\nquote\n-----\n\nThe ``quote`` filter quotes URL parameters. It accepts optional safe characters\nthat can be used to prevent quoting of certain characters. This filter uses\n`urllib.quote`_ for quoting. Safe characters inlude only the slash ``/`` by\ndefault. ::\n\n {{ value|quote:\"~/\" }}\n\nquote_plus\n----------\n\nThe ``quote_plus`` filter is similart ot the `quote`_ filter, except that it\nconverts all spaces to ``+``. This filter also takes optional safe \ncharacters. The filter uses `urllib.quote_plus`_ for quoting. ::\n\n {{ value|quote_plus }}\n\nReporting bugs\n==============\n\nPlease report any bugs to our BitBucket `issue tracker`_.\n\nContributors\n============\n\nWe thank the following contributors:\n\n+ nlaurance_ for contributing the ``overload_params`` and improvements to\n ``del_params``, as well as compatibility with Django 1.4.x.\n\n.. _Django documentation on QueryDict: https://docs.djangoproject.com/en/dev/ref/request-response/?from=olddocs#querydict-objects\n.. _issue tracker: https://bitbucket.org/monwara/django-url-tools/issues\n.. _urllib.quote: http://docs.python.org/2/library/urllib.html#urllib.quote\n.. _urllib.quote_plus: http://docs.python.org/2/library/urllib.html#urllib.quote_plus\n.. _nlaurance: https://bitbucket.org/nlaurance", "description_content_type": null, "docs_url": null, "download_url": "https://bitbucket.org/monwara/django-url-tools/downloads", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://bitbucket.org/monwara/django-url-tools", "keywords": null, "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "django-url-tools", "package_url": "https://pypi.org/project/django-url-tools/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/django-url-tools/", "project_urls": { "Download": "https://bitbucket.org/monwara/django-url-tools/downloads", "Homepage": "https://bitbucket.org/monwara/django-url-tools" }, "release_url": "https://pypi.org/project/django-url-tools/0.0.8/", "requires_dist": null, "requires_python": null, "summary": "Django helpers for dealing with URLs in templates", "version": "0.0.8" }, "last_serial": 992187, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "2fe09130839d77282fc251c69ad4c373", "sha256": "495a60f0f3de470afe281dc9486ff192aaa2ff1fb1909d7b19b65beced5f71fe" }, "downloads": -1, "filename": "django-url-tools-0.0.1.tar.gz", "has_sig": false, "md5_digest": "2fe09130839d77282fc251c69ad4c373", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5927, "upload_time": "2013-03-05T04:09:04", "url": "https://files.pythonhosted.org/packages/4b/f3/910882edb7c94b0a7bffbcd8a44367ed38a18ab8654ba94f54775c775f0d/django-url-tools-0.0.1.tar.gz" }, { "comment_text": "", "digests": { "md5": "c5894418789d7d1c22381e1402818ef5", "sha256": "ff3016f724413abef76147e01dfb318b9e855f52f2b627c5886846a4ff7c8fbf" }, "downloads": -1, "filename": "django-url-tools-0.0.1.zip", "has_sig": false, "md5_digest": "c5894418789d7d1c22381e1402818ef5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9837, "upload_time": "2013-03-05T04:08:52", "url": "https://files.pythonhosted.org/packages/51/39/522c96489df9432d327d3509733d15dd7518ee782f1b4563fa5c66519329/django-url-tools-0.0.1.zip" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "4d3d279ab8ef21094e9b302d45104164", "sha256": "893c5d098dd066794453c45789d90a6f81286911389dd62c745a56a3a5da44b5" }, "downloads": -1, "filename": "django-url-tools-0.0.3.tar.gz", "has_sig": false, "md5_digest": "4d3d279ab8ef21094e9b302d45104164", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6347, "upload_time": "2013-03-29T15:01:23", "url": "https://files.pythonhosted.org/packages/78/1f/874a893e8182617e43e78107568b670b8bc321ab2cb8e48278848113b233/django-url-tools-0.0.3.tar.gz" }, { "comment_text": "", "digests": { "md5": "8bd787babe11b970cf6245367e1a0802", "sha256": "4c6fda7e03499f4745a669f920fe97383ed707d0b15c133b0219a466be352931" }, "downloads": -1, "filename": "django-url-tools-0.0.3.zip", "has_sig": false, "md5_digest": "8bd787babe11b970cf6245367e1a0802", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10460, "upload_time": "2013-03-29T15:01:32", "url": "https://files.pythonhosted.org/packages/df/66/dbfa3bacd3fa69e5a72b6366737fabc946834a533e933dac425251bafaf2/django-url-tools-0.0.3.zip" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "09a236c580e7b91e85df286eff9c6b26", "sha256": "e7f66a1487975b2c576636af206a27d89ba3c2bfb17ecf2089a060737b2a0fdb" }, "downloads": -1, "filename": "django-url-tools-0.0.4.tar.gz", "has_sig": false, "md5_digest": "09a236c580e7b91e85df286eff9c6b26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6758, "upload_time": "2013-03-29T18:50:23", "url": "https://files.pythonhosted.org/packages/7e/a4/b33452445c1ccac1422ced5671ac529089cd71b1e314c2408daf5cca6f1a/django-url-tools-0.0.4.tar.gz" }, { "comment_text": "", "digests": { "md5": "a4f47323d147b6ef9c24b07ef2a1a40c", "sha256": "7b4e5e1bd6fbd6fcff8e0428b4d2bf4563fd41ab52c95fc415f3fab345518df0" }, "downloads": -1, "filename": "django-url-tools-0.0.4.zip", "has_sig": false, "md5_digest": "a4f47323d147b6ef9c24b07ef2a1a40c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11026, "upload_time": "2013-03-29T18:50:37", "url": "https://files.pythonhosted.org/packages/00/84/5660160efb9808e2ed5cf01ba71c494f8f3a9a78ef64d0d6366015654668/django-url-tools-0.0.4.zip" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "3f2a290f4a98715757ee67d9343685b5", "sha256": "f3e9035235b23ef77247dd86b3f50cb8c87d83b505cc6dbfb67043035903ceda" }, "downloads": -1, "filename": "django-url-tools-0.0.5.tar.gz", "has_sig": false, "md5_digest": "3f2a290f4a98715757ee67d9343685b5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6733, "upload_time": "2013-03-29T20:07:03", "url": "https://files.pythonhosted.org/packages/38/47/df81676ec7ef8ec9e8e857fa44b4303998b17b804ddd86fe3db91c9378c1/django-url-tools-0.0.5.tar.gz" }, { "comment_text": "", "digests": { "md5": "879ca3ddcbbdf51fdb055faafafcb395", "sha256": "da3d8242990f609d6180499c47a2f6248f5c9cda0459fd19ab9fe66c94e599ef" }, "downloads": -1, "filename": "django-url-tools-0.0.5.zip", "has_sig": false, "md5_digest": "879ca3ddcbbdf51fdb055faafafcb395", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10992, "upload_time": "2013-03-29T20:07:14", "url": "https://files.pythonhosted.org/packages/22/68/df5369b6a1c3fc49c43120ba54aa5c1e3e1f7060b2b7cf74aeb3656908de/django-url-tools-0.0.5.zip" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "bf85f520025d805450cbee66d57bd798", "sha256": "9696d29bb8b3e0e676b699d69d165c9ab6b67fc927ed8168653874b63c326116" }, "downloads": -1, "filename": "django-url-tools-0.0.6.tar.gz", "has_sig": false, "md5_digest": "bf85f520025d805450cbee66d57bd798", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7133, "upload_time": "2013-03-30T12:50:48", "url": "https://files.pythonhosted.org/packages/88/ff/61b85ea97d54093f28963dc7538e3de492e06bdb457bbd58fb894c299c54/django-url-tools-0.0.6.tar.gz" }, { "comment_text": "", "digests": { "md5": "2ff1d25b7fe6033b9ef2926848040be1", "sha256": "18ded69c736bf461dfb7317e0d00675fdef2226e09afeb5c4ec5a88f625d25b1" }, "downloads": -1, "filename": "django-url-tools-0.0.6.zip", "has_sig": false, "md5_digest": "2ff1d25b7fe6033b9ef2926848040be1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11641, "upload_time": "2013-03-30T12:50:54", "url": "https://files.pythonhosted.org/packages/83/8f/68956ddac01be8ada444329d5f7276eea83b501debd181fdaa8710b8ea6c/django-url-tools-0.0.6.zip" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "c516e9a13ef974ceebe574b09ca4801a", "sha256": "bbf5a28427be457040325ec9941169cddb5ef77622ac480a55682765cf1beaa3" }, "downloads": -1, "filename": "django-url-tools-0.0.7.tar.gz", "has_sig": false, "md5_digest": "c516e9a13ef974ceebe574b09ca4801a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8038, "upload_time": "2013-06-02T08:34:52", "url": "https://files.pythonhosted.org/packages/de/51/6e7f1848536ac405d7e40eec5a8904b2d0e48c3486a4a18f466dfcbe2357/django-url-tools-0.0.7.tar.gz" }, { "comment_text": "", "digests": { "md5": "f6ccf36bd0291c6d0cb426a539bb2cf7", "sha256": "0e05b1eaad14ab84eac7e6f344ca0aaea331a0ab3f299432f293feb8e517a9b3" }, "downloads": -1, "filename": "django-url-tools-0.0.7.zip", "has_sig": false, "md5_digest": "f6ccf36bd0291c6d0cb426a539bb2cf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12729, "upload_time": "2013-06-02T08:35:01", "url": "https://files.pythonhosted.org/packages/8a/4d/4c9e2bde902055b8459109bf0ad298f96f357faaf46161296e8fba697959/django-url-tools-0.0.7.zip" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "6ee46460069090012256ceedc69d2569", "sha256": "012cf28796265cd805b502f360c9a86f750b02dd7d5c770fc878bf1dead5aada" }, "downloads": -1, "filename": "django-url-tools-0.0.8.tar.gz", "has_sig": false, "md5_digest": "6ee46460069090012256ceedc69d2569", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8471, "upload_time": "2014-02-06T10:26:04", "url": "https://files.pythonhosted.org/packages/68/73/a0a8ff57b654579937ada7f59ba39611be83fdd9cd895c642f0233de0972/django-url-tools-0.0.8.tar.gz" }, { "comment_text": "", "digests": { "md5": "53012cdd21a033a2447591369bb6a6e4", "sha256": "9d9cb034d3e1768ef4b98ab3e3ebb75eae51530d04c11ad19ecbefa30831d762" }, "downloads": -1, "filename": "django-url-tools-0.0.8.zip", "has_sig": false, "md5_digest": "53012cdd21a033a2447591369bb6a6e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13301, "upload_time": "2014-02-06T10:26:13", "url": "https://files.pythonhosted.org/packages/17/3f/fed91aa38d8a47001a7b3190f6e986fd285ecfcb1d3e025dead8cd3b1f70/django-url-tools-0.0.8.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6ee46460069090012256ceedc69d2569", "sha256": "012cf28796265cd805b502f360c9a86f750b02dd7d5c770fc878bf1dead5aada" }, "downloads": -1, "filename": "django-url-tools-0.0.8.tar.gz", "has_sig": false, "md5_digest": "6ee46460069090012256ceedc69d2569", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8471, "upload_time": "2014-02-06T10:26:04", "url": "https://files.pythonhosted.org/packages/68/73/a0a8ff57b654579937ada7f59ba39611be83fdd9cd895c642f0233de0972/django-url-tools-0.0.8.tar.gz" }, { "comment_text": "", "digests": { "md5": "53012cdd21a033a2447591369bb6a6e4", "sha256": "9d9cb034d3e1768ef4b98ab3e3ebb75eae51530d04c11ad19ecbefa30831d762" }, "downloads": -1, "filename": "django-url-tools-0.0.8.zip", "has_sig": false, "md5_digest": "53012cdd21a033a2447591369bb6a6e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13301, "upload_time": "2014-02-06T10:26:13", "url": "https://files.pythonhosted.org/packages/17/3f/fed91aa38d8a47001a7b3190f6e986fd285ecfcb1d3e025dead8cd3b1f70/django-url-tools-0.0.8.zip" } ] }