{ "info": { "author": "David Winterbottom", "author_email": "david.winterbottom@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "================================\npurl - A simple Python URL class\n================================\n\nA simple, immutable URL class with a clean API for interrogation and\nmanipulation. Supports Pythons 2.7, 3.3, 3.4, 3.5, 3.6 and pypy.\n\nAlso supports template URLs as per `RFC 6570`_\n\nContents:\n\n.. contents:: :local:\n :depth: 1\n\n.. image:: https://secure.travis-ci.org/codeinthehole/purl.png\n :target: https://travis-ci.org/codeinthehole/purl\n\n.. image:: https://img.shields.io/pypi/v/purl.svg\n :target: https://crate.io/packages/purl/\n\n.. _`RFC 6570`: http://tools.ietf.org/html/rfc6570\n\nDocs\n----\n\nhttp://purl.readthedocs.org/en/latest/\n\nInstall\n-------\n\nFrom PyPI (stable)::\n\n $ pip install purl\n\nFrom Github (unstable)::\n\n $ pip install git+git://github.com/codeinthehole/purl.git#egg=purl\n\nUse\n---\n\nConstruct:\n\n.. code:: python\n\n >>> from purl import URL\n\n # String constructor\n >>> from_str = URL('https://www.google.com/search?q=testing')\n\n # Keyword constructor\n >>> from_kwargs = URL(scheme='https', host='www.google.com', path='/search', query='q=testing')\n\n # Combine\n >>> from_combo = URL('https://www.google.com').path('search').query_param('q', 'testing')\n\nURL objects are immutable - all mutator methods return a new instance.\n\nInterrogate:\n\n.. code:: python\n\n >>> u = URL('https://www.google.com/search?q=testing')\n >>> u.scheme()\n 'https'\n >>> u.host()\n 'www.google.com'\n >>> u.domain()\n 'www.google.com'\n >>> u.username()\n >>> u.password()\n >>> u.netloc()\n 'www.google.com'\n >>> u.port()\n >>> u.path()\n '/search'\n >>> u.query()\n 'q=testing'\n >>> u.fragment()\n ''\n >>> u.path_segment(0)\n 'search'\n >>> u.path_segments()\n ('search',)\n >>> u.query_param('q')\n 'testing'\n >>> u.query_param('q', as_list=True)\n ['testing']\n >>> u.query_param('lang', default='GB')\n 'GB'\n >>> u.query_params()\n {'q': ['testing']}\n >>> u.has_query_param('q')\n True\n >>> u.has_query_params(('q', 'r'))\n False\n >>> u.subdomains()\n ['www', 'google', 'com']\n >>> u.subdomain(0)\n 'www'\n\nNote that each accessor method is overloaded to be a mutator method too, similar\nto the jQuery API. Eg:\n\n.. code:: python\n\n >>> u = URL.from_string('https://github.com/codeinthehole')\n\n # Access\n >>> u.path_segment(0)\n 'codeinthehole'\n\n # Mutate (creates a new instance)\n >>> new_url = u.path_segment(0, 'tangentlabs')\n >>> new_url is u\n False\n >>> new_url.path_segment(0)\n 'tangentlabs'\n\nHence, you can build a URL up in steps:\n\n.. code:: python\n\n >>> u = URL().scheme('http').domain('www.example.com').path('/some/path').query_param('q', 'search term')\n >>> u.as_string()\n 'http://www.example.com/some/path?q=search+term'\n\nAlong with the above overloaded methods, there is also a ``add_path_segment``\nmethod for adding a segment at the end of the current path:\n\n.. code:: python\n\n >>> new_url = u.add_path_segment('here')\n >>> new_url.as_string()\n 'http://www.example.com/some/path/here?q=search+term'\n\nCouple of other things:\n\n* Since the URL class is immutable it can be used as a key in a dictionary\n* It can be pickled and restored\n* It supports equality operations\n* It supports equality operations\n\nURL templates can be used either via a ``Template`` class:\n\n.. code:: python\n\n >>> from purl import Template\n >>> tpl = Template(\"http://example.com{/list*}\")\n >>> url = tpl.expand({'list': ['red', 'green', 'blue']})\n >>> url.as_string()\n 'http://example.com/red/green/blue'\n\nor the ``expand`` function:\n\n.. code:: python\n\n >>> from purl import expand\n >>> expand(u\"{/list*}\", {'list': ['red', 'green', 'blue']})\n '/red/green/blue'\n\nA wide variety of expansions are possible - refer to the RFC_ for more details.\n\n.. _RFC: http://tools.ietf.org/html/rfc6570\n\nChangelog\n---------\n\nv1.5 - 2019-03-10\n~~~~~~~~~~~~~~~~~\n\n* Allow `@` in passwords.\n\nv1.4 - 2018-03-11\n~~~~~~~~~~~~~~~~~\n\n* Allow usernames and passwords to be removed from URLs.\n\nv1.3.1\n~~~~~~\n\n* Ensure paths always have a leading slash.\n\nv1.3\n~~~~\n\n* Allow absolute URLs to be converted into relative.\n\nv1.2\n~~~~\n\n* Support password-less URLs.\n* Allow slashes to be passed as path segments.\n\nv1.1\n~~~~\n\n* Support setting username and password via mutator methods\n\nv1.0.3\n~~~~~~\n\n* Handle some unicode compatibility edge-cases\n\nv1.0.2\n~~~~~~\n\n* Fix template expansion bug with no matching variables being passed in. This\n ensures ``purl.Template`` works correctly with the URLs returned from the\n Github API.\n\nv1.0.1\n~~~~~~\n\n* Fix bug with special characters in paths not being escaped.\n\nv1.0\n~~~~\n\n* Slight tidy up. Document support for PyPy and Python 3.4.\n\nv0.8\n~~~~\n\n* Support for RFC 6570 URI templates\n\nv0.7\n~~~~\n\n* All internal strings are unicode.\n* Support for unicode chars in path, fragment, query, auth added.\n\nv0.6\n~~~~\n\n* Added ``append_query_param`` method\n* Added ``remove_query_param`` method\n\nv0.5\n~~~~\n\n* Added support for Python 3.2/3.3 (thanks @pmcnr and @mitchellrj)\n\nv0.4.1\n~~~~~~\n\n* Added API docs\n* Added to readthedocs.org\n\nv0.4\n~~~~\n\n* Modified constructor to accept full URL string as first arg\n* Added ``add_path_segment`` method\n\nv0.3.2\n~~~~~~\n\n* Fixed bug port number in string when using from_string constructor\n\nv0.3.1\n~~~~~~\n\n* Fixed bug with passing lists to query param setter methods\n\nv0.3\n~~~~\n\n* Added support for comparison and equality\n* Added support for pickling\n* Added ``__slots__`` so instances can be used as keys within dictionaries\n\nContribute\n----------\n\nClone, create a virtualenv then install purl and the packages required for\ntesting::\n\n $ git clone git@github.com:codeinthehole/purl.git\n $ cd purl\n $ mkvirtualenv purl # requires virtualenvwrapper\n (purl) $ make\n\nEnsure tests pass using::\n\n (purl) $ ./runtests.sh\n\nor::\n\n $ tox\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/codeinthehole/purl", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "purl", "package_url": "https://pypi.org/project/purl/", "platform": "", "project_url": "https://pypi.org/project/purl/", "project_urls": { "Homepage": "https://github.com/codeinthehole/purl" }, "release_url": "https://pypi.org/project/purl/1.5/", "requires_dist": null, "requires_python": "", "summary": "An immutable URL class for easy URL-building and manipulation", "version": "1.5" }, "last_serial": 4922638, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "cc4c8c76da295d811ff08005cfa139c1", "sha256": "4476990ab89c74a7ad7d4f7d28279398ad8c031c3996019cda923276ccacd883" }, "downloads": -1, "filename": "purl-0.1.tar.gz", "has_sig": false, "md5_digest": "cc4c8c76da295d811ff08005cfa139c1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4252, "upload_time": "2012-04-07T22:05:24", "url": "https://files.pythonhosted.org/packages/1a/89/92a5ae34537ea42d6a3382129e96d5a26e07ebdd63a6bdf28dae62b2f2e8/purl-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f7270c0b1cb47b5efde42057c973e2aa", "sha256": "74a83cba4be3eab637e3baf9e9a5b6013305fb7129ec195d849df94cab7a7189" }, "downloads": -1, "filename": "purl-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f7270c0b1cb47b5efde42057c973e2aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4570, "upload_time": "2012-04-07T22:07:10", "url": "https://files.pythonhosted.org/packages/d3/ef/f4623b0d461ac1111b3b1c9117d977458aca046333503d5317d301e72dac/purl-0.1.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "d1ec5dc28c9c477e8a5102252d806d6c", "sha256": "1a2dc544df452917b49bbe566f2d77d525760bbabfc5cca65e92853ea679751c" }, "downloads": -1, "filename": "purl-0.2.tar.gz", "has_sig": false, "md5_digest": "d1ec5dc28c9c477e8a5102252d806d6c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4640, "upload_time": "2012-04-16T15:16:12", "url": "https://files.pythonhosted.org/packages/3b/1f/39ff169d23a6671e8da88791de5df13c3d73b41fa65e5b7bdbba42ec1007/purl-0.2.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "edb321e85288f753f06aae6427cbf850", "sha256": "f7eeb39b819e7f29c3c807e48b9d1f455a05274dd783c5e64c96803225e6ae4b" }, "downloads": -1, "filename": "purl-0.2.1.tar.gz", "has_sig": false, "md5_digest": "edb321e85288f753f06aae6427cbf850", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4681, "upload_time": "2012-04-16T15:35:58", "url": "https://files.pythonhosted.org/packages/bb/f7/73673bf1e2050a7f441baf6cdfbc9b25aaf1db288fc61fdd5b5f455b7086/purl-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "64d5a14339858b5f0c2514351c6b91bf", "sha256": "0001a641e251cdf61afa18b34d0a1088cdd6625ca0d70ef70d279f3ce924de28" }, "downloads": -1, "filename": "purl-0.2.2.tar.gz", "has_sig": false, "md5_digest": "64d5a14339858b5f0c2514351c6b91bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3300, "upload_time": "2012-04-19T23:00:10", "url": "https://files.pythonhosted.org/packages/6c/51/08fe749e232d1a9d2f15032f92182d5946cbe25bb153ab081373adf37d3e/purl-0.2.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "2ca382562302f41bb19a3e29fe13b0b8", "sha256": "aca86b50266d4fce47605fb910044f739fc26807825dd7864b2e1aac6a699965" }, "downloads": -1, "filename": "purl-0.3.tar.gz", "has_sig": false, "md5_digest": "2ca382562302f41bb19a3e29fe13b0b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3618, "upload_time": "2012-04-20T18:18:33", "url": "https://files.pythonhosted.org/packages/9c/e8/c735cd07781532a2871411f0bb42d75e55077463d22a81031acaa5dd1237/purl-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "f9f1b56e3dbc3707d8a68589033d1756", "sha256": "851b2b555c2a0ca5d55437a7fd5d492191588c3c8c2cae4fbcfb56977dfe347d" }, "downloads": -1, "filename": "purl-0.3.1.tar.gz", "has_sig": false, "md5_digest": "f9f1b56e3dbc3707d8a68589033d1756", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3658, "upload_time": "2012-04-22T22:44:21", "url": "https://files.pythonhosted.org/packages/6e/49/334d581658ff41a643de8c6b65964adc93d6de25e56e25c8438f2f79a2f0/purl-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "a4b769580a7d319a8a458f66933c2a7f", "sha256": "66db82932c77b8d5bbaf7e5f7c8800d86014b3cefa58dfbb09a8bc11097d10e8" }, "downloads": -1, "filename": "purl-0.3.2.tar.gz", "has_sig": false, "md5_digest": "a4b769580a7d319a8a458f66933c2a7f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3750, "upload_time": "2012-04-24T11:57:54", "url": "https://files.pythonhosted.org/packages/28/23/a70ab095abadc8e41fb647f7d45327bd0118fb298fb48c589ef4095acf9a/purl-0.3.2.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "a1973c03e904bcb4dd6bdbb5e9c55337", "sha256": "e8373b1f25bd492745bc4536c20dbe74efb07f5e4af0cd138082220a8d02ecb0" }, "downloads": -1, "filename": "purl-0.4.tar.gz", "has_sig": false, "md5_digest": "a1973c03e904bcb4dd6bdbb5e9c55337", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4406, "upload_time": "2012-05-15T16:37:08", "url": "https://files.pythonhosted.org/packages/3d/1f/6b687c8033dc82b573f72938d9500408eac7456d28935937ecd42e41964c/purl-0.4.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "84fc09956e80730f703597c126b5aa0d", "sha256": "7f8e8cef9d8a319bf70d4120438c91032adce2e29b725239c82df09d3a3cf80a" }, "downloads": -1, "filename": "purl-0.4.1.tar.gz", "has_sig": false, "md5_digest": "84fc09956e80730f703597c126b5aa0d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5852, "upload_time": "2012-06-14T23:25:50", "url": "https://files.pythonhosted.org/packages/10/e2/e53f32cce57cb2021129164e365a0f7f98ba5fe352cca46c2d8f0f4a3cf3/purl-0.4.1.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "e6a100d4d3ba7635e09a8d0de280bf1c", "sha256": "a221ea552da2a075acc792768ea3ac6311ba68aca2e798ed956b2a7f19988b23" }, "downloads": -1, "filename": "purl-0.5.tar.gz", "has_sig": false, "md5_digest": "e6a100d4d3ba7635e09a8d0de280bf1c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6032, "upload_time": "2013-03-28T08:22:20", "url": "https://files.pythonhosted.org/packages/cc/a1/8a3ebd7069de13ae4ed408dbaab367b28b12f05771c19c3b7bb4bcc2be11/purl-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "5c672d5e888ba1df3e153b6599f6fa08", "sha256": "e7dd626d4e13dda5b144fba0279569eb81f8106632cd5cead7122629aad25391" }, "downloads": -1, "filename": "purl-0.6.tar.gz", "has_sig": false, "md5_digest": "5c672d5e888ba1df3e153b6599f6fa08", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6309, "upload_time": "2013-04-11T11:25:31", "url": "https://files.pythonhosted.org/packages/a6/32/bb99fc7e10a1b9fcd550cef503de6c60eb655d223bd4f099d3035d8b8c00/purl-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "abc46e30b3a0514e43a7293da1503782", "sha256": "9b567391c52f40420d5717ca8ea04cb91b660e1b3b159b042fa9dc79f986450c" }, "downloads": -1, "filename": "purl-0.7.tar.gz", "has_sig": false, "md5_digest": "abc46e30b3a0514e43a7293da1503782", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7235, "upload_time": "2013-05-29T16:26:02", "url": "https://files.pythonhosted.org/packages/e0/47/419afb91ee2b1a4b86164e8848a11eb24699d2c805c191391c6d2e8f79fd/purl-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "92729dbfafc9ac6d33583a3e090152cc", "sha256": "6a9f118641f168d880834fd750af1478c0ebd2d628af6a29516a1a712c91d4bb" }, "downloads": -1, "filename": "purl-0.8.tar.gz", "has_sig": false, "md5_digest": "92729dbfafc9ac6d33583a3e090152cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11219, "upload_time": "2013-06-26T10:35:09", "url": "https://files.pythonhosted.org/packages/bc/8f/655741b5ac2aa34aaed083de16369a5431efb45f808f465ccaea37a5514e/purl-0.8.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "125a23019ccec70b9dab60921c5296f4", "sha256": "72c59f14fa51e7cd27a4e8b40f4e06dd2e2952c602c67dc4fba90aa4ecefa40a" }, "downloads": -1, "filename": "purl-1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "125a23019ccec70b9dab60921c5296f4", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11224, "upload_time": "2014-07-10T20:56:16", "url": "https://files.pythonhosted.org/packages/e6/d6/2b83715de2163c2bfb91846496177b44719ef1fb02760c4161f0c1687e06/purl-1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2c22f05c6edd6e7da68f35c0d8d91742", "sha256": "bf8ae85bb10da4d11b5495bd56229cc76b6cfc880413fef85241632000ad9423" }, "downloads": -1, "filename": "purl-1.0.tar.gz", "has_sig": false, "md5_digest": "2c22f05c6edd6e7da68f35c0d8d91742", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11013, "upload_time": "2014-07-10T20:56:06", "url": "https://files.pythonhosted.org/packages/00/ef/367d217834f07bf9dde631265d5389dcb9586e969c3ce37e2fee561e572a/purl-1.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "2ebde340d08e618cebc66cbf81fd2484", "sha256": "856d241d5a58a31a45d265dfdaf0c77bd28467b678cf83f1331bb38ed1b70250" }, "downloads": -1, "filename": "purl-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2ebde340d08e618cebc66cbf81fd2484", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11519, "upload_time": "2014-11-25T13:55:06", "url": "https://files.pythonhosted.org/packages/0e/62/95adf639483be0456f017d83cb5d41f3c62a37b4bb02cf34d88b4637db40/purl-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a20808b5ed5b5de03d77570a3e1bbdd", "sha256": "3c8a6c350eb0b096ee0820dc0b401e3bf9d3a4a42b1764bd421551c9ec851237" }, "downloads": -1, "filename": "purl-1.0.1.tar.gz", "has_sig": false, "md5_digest": "7a20808b5ed5b5de03d77570a3e1bbdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11271, "upload_time": "2014-11-25T13:55:03", "url": "https://files.pythonhosted.org/packages/54/e7/6abb54e8a125b1c53b5304cac6955bd7fed2723f7b80a0905d9ac38ac525/purl-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "bc05428cf4d0c342ce0230f6b115dafc", "sha256": "8513910f50c49e1ec475ceef002f8d07b46cf6a6f30514122ca2e5a061848021" }, "downloads": -1, "filename": "purl-1.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc05428cf4d0c342ce0230f6b115dafc", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11675, "upload_time": "2014-12-12T10:38:33", "url": "https://files.pythonhosted.org/packages/d1/f3/574181ee116790f29ed4f137beb83431169f87d4430791ee021f160a6000/purl-1.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5429547676c5d7db99f0ae4117c4c8dc", "sha256": "08215a401c3f96771abe6f9648d8a6f3e6759c2f7983a58c6715ba3284f0ec8b" }, "downloads": -1, "filename": "purl-1.0.2.tar.gz", "has_sig": false, "md5_digest": "5429547676c5d7db99f0ae4117c4c8dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11453, "upload_time": "2014-12-12T10:38:28", "url": "https://files.pythonhosted.org/packages/ab/20/6bc5a5aab747ac69a75aacd5afe69431769f64f8cdcf1b0cf78568a41fdc/purl-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "f8f62f6663c3fb64181e1a2535bfc84d", "sha256": "4df2c9e1deaea562e57b3bbda77b5a9cf7c7437635a85d4e7ccd2b918814ca07" }, "downloads": -1, "filename": "purl-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f8f62f6663c3fb64181e1a2535bfc84d", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11827, "upload_time": "2014-12-17T12:09:04", "url": "https://files.pythonhosted.org/packages/e6/55/325b2afc71a3e4aaa0092a2881534ba149026f04c71c9559452bfd6abf72/purl-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f07b21a91bb0995a0f9da962321fa43b", "sha256": "8fc6a112afb813de762d6e73087fd29d987490271ca35d47ecbc36540f041d28" }, "downloads": -1, "filename": "purl-1.0.3.tar.gz", "has_sig": false, "md5_digest": "f07b21a91bb0995a0f9da962321fa43b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11594, "upload_time": "2014-12-17T12:09:01", "url": "https://files.pythonhosted.org/packages/bb/71/5704b31c0a0ec4d19657e2f6ade4203b2ae4497acd92cc24c93356ae6bbd/purl-1.0.3.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "63e5a4e236ce28c5a1b43d06b2a78b52", "sha256": "8e2998ffee6d8aa8be0205df1d5118b242fa1d1995af0a30349401c25037a32f" }, "downloads": -1, "filename": "purl-1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "63e5a4e236ce28c5a1b43d06b2a78b52", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 11879, "upload_time": "2015-05-06T21:21:37", "url": "https://files.pythonhosted.org/packages/3f/92/acff2d09bf40fff1474987802deb9c5e39ad9f2ba5629be0eab77093214a/purl-1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "18e85232396ce60d2e77baed7c5c90e4", "sha256": "117d2ae7476e3108f4235bb833d6da2ac72c73c3711834f012c3ae576d909c10" }, "downloads": -1, "filename": "purl-1.1.tar.gz", "has_sig": false, "md5_digest": "18e85232396ce60d2e77baed7c5c90e4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11678, "upload_time": "2015-05-06T21:21:33", "url": "https://files.pythonhosted.org/packages/a4/e3/ed1a682b0ae0457f897750cf57600abc51296419b460a449c0fb1f2cfbf9/purl-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "48332927f7399997c0610633d9cc1e38", "sha256": "fe6c29cc22face1ad4bfdc797adc5c7a84ec0d3adb12f728ba690a80968620d6" }, "downloads": -1, "filename": "purl-1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "48332927f7399997c0610633d9cc1e38", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12030, "upload_time": "2016-01-17T21:40:18", "url": "https://files.pythonhosted.org/packages/8f/d1/d9b851f1e72f17dc9e8d8008bb8f8bce4cb365c1fa3197a7f4bc39b73b0b/purl-1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c6a37ac79d7ae4b1dc8589f81fcf6a19", "sha256": "b0d4f73e347a5848fc7a105e60cdf29a3234a70e17d0983852545bb12f234a38" }, "downloads": -1, "filename": "purl-1.2.tar.gz", "has_sig": false, "md5_digest": "c6a37ac79d7ae4b1dc8589f81fcf6a19", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11908, "upload_time": "2016-01-17T21:39:35", "url": "https://files.pythonhosted.org/packages/45/a1/c8c834cbd25a7bd484ad861a17a09c8d2d5f9eb2e594403db4c96e6d7012/purl-1.2.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "d98a38887dc4924e9e604536850332db", "sha256": "0691e3b0e68995128823685ed5505fbb5815ca507c90f5737e69f5393f9c0a6a" }, "downloads": -1, "filename": "purl-1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d98a38887dc4924e9e604536850332db", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 12158, "upload_time": "2016-04-26T11:27:59", "url": "https://files.pythonhosted.org/packages/43/6f/05b3815915528118822c44641df28aeb1c779a1ee5d9c2841048c439b226/purl-1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4aad2cf530fc4f1b9e60818d98d9d19f", "sha256": "2061099165a8407f47f41096c3388b249e52a55b51a67c50738ca83033ce01f2" }, "downloads": -1, "filename": "purl-1.3.tar.gz", "has_sig": false, "md5_digest": "4aad2cf530fc4f1b9e60818d98d9d19f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11948, "upload_time": "2016-04-26T11:27:42", "url": "https://files.pythonhosted.org/packages/12/01/380811cf96de88f39196c55ee8fa158a9fd527a13722ef56ed0ba4360719/purl-1.3.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "290f855671e30899ec4b3089eeb35eb8", "sha256": "abdc851f661a49565631aaafbf84ad208ae448d64aae9096e6f8cc0457e60318" }, "downloads": -1, "filename": "purl-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "290f855671e30899ec4b3089eeb35eb8", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12292, "upload_time": "2017-05-12T14:54:05", "url": "https://files.pythonhosted.org/packages/2a/71/4ed9f72e94b093f375f33a3ac8fd4e799d2da51d798a869a94d7d1af6547/purl-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "26cba8f4791245f1d246b1bdea5dc101", "sha256": "9294e15e85e08018b54de2c4971672d0aa48683d0bc2c87c3571ccff2730f0a4" }, "downloads": -1, "filename": "purl-1.3.1.tar.gz", "has_sig": false, "md5_digest": "26cba8f4791245f1d246b1bdea5dc101", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12096, "upload_time": "2017-05-12T14:54:03", "url": "https://files.pythonhosted.org/packages/39/4a/e362aa72cf4f48ac6f806f53e768f4a30e4bdb028aebeae08e12d128730d/purl-1.3.1.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "5fad214817ff6e8d9fc8ec58e880cec1", "sha256": "906e9f9789fdbf669fcf3a65b1e3ed16b28e6aaf2ab4a3f0c78dab341599d8b4" }, "downloads": -1, "filename": "purl-1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5fad214817ff6e8d9fc8ec58e880cec1", "packagetype": "bdist_wheel", "python_version": "3.5", "requires_python": null, "size": 12334, "upload_time": "2018-03-11T21:59:03", "url": "https://files.pythonhosted.org/packages/36/dc/252eedfe062c3f8b92b565ebbdfacbcf0e5522d2cd4c8873d9f88b096290/purl-1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cb344d5f78bdb34b11ff23df771366a2", "sha256": "d9b1ab3e2bee15900138562504422165728f86d0815dfbcbc3f180448990de8a" }, "downloads": -1, "filename": "purl-1.4.tar.gz", "has_sig": false, "md5_digest": "cb344d5f78bdb34b11ff23df771366a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9978, "upload_time": "2018-03-11T21:59:00", "url": "https://files.pythonhosted.org/packages/08/de/1f0966a007ad23cecebe5d9b9a0a44540e34cc75ab207672df48bf983dcf/purl-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "8bde3a6a28b8ae4a3aca79ef7d78c732", "sha256": "5ac0e85979da0172d80156701cb3eb9b1eff31f3b43e981ef6dc06251c53a3a4" }, "downloads": -1, "filename": "purl-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8bde3a6a28b8ae4a3aca79ef7d78c732", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10331, "upload_time": "2019-03-10T20:52:30", "url": "https://files.pythonhosted.org/packages/9e/3e/019857aadcb94822952f4d103d6772e2a61f31457c0777a9bb4266cdd667/purl-1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a10782a6f0c771f3f3319956d41f7ff", "sha256": "75141bef1e7fce943afda671663a97c792af01c81648026cd5b5c0dcc3b72b96" }, "downloads": -1, "filename": "purl-1.5.tar.gz", "has_sig": false, "md5_digest": "2a10782a6f0c771f3f3319956d41f7ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9965, "upload_time": "2019-03-10T20:52:27", "url": "https://files.pythonhosted.org/packages/b8/f7/eb108f39ffcbebd6a1cc1030b912640fc28edb0146e8658b6a1aa60f1060/purl-1.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8bde3a6a28b8ae4a3aca79ef7d78c732", "sha256": "5ac0e85979da0172d80156701cb3eb9b1eff31f3b43e981ef6dc06251c53a3a4" }, "downloads": -1, "filename": "purl-1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8bde3a6a28b8ae4a3aca79ef7d78c732", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 10331, "upload_time": "2019-03-10T20:52:30", "url": "https://files.pythonhosted.org/packages/9e/3e/019857aadcb94822952f4d103d6772e2a61f31457c0777a9bb4266cdd667/purl-1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2a10782a6f0c771f3f3319956d41f7ff", "sha256": "75141bef1e7fce943afda671663a97c792af01c81648026cd5b5c0dcc3b72b96" }, "downloads": -1, "filename": "purl-1.5.tar.gz", "has_sig": false, "md5_digest": "2a10782a6f0c771f3f3319956d41f7ff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9965, "upload_time": "2019-03-10T20:52:27", "url": "https://files.pythonhosted.org/packages/b8/f7/eb108f39ffcbebd6a1cc1030b912640fc28edb0146e8658b6a1aa60f1060/purl-1.5.tar.gz" } ] }