{ "info": { "author": "Ian Stapleton Cordasco", "author_email": "graffatcolmingov@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Natural Language :: English", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "rfc3986\n=======\n\nA Python implementation of `RFC 3986`_ including validation and authority \nparsing.\n\nInstallation\n------------\n\nUse pip to install ``rfc3986`` like so::\n\n pip install rfc3986\n\nLicense\n-------\n\n`Apache License Version 2.0`_\n\nExample Usage\n-------------\n\nThe following are the two most common use cases envisioned for ``rfc3986``.\n\nReplacing ``urlparse``\n``````````````````````\n\nTo parse a URI and receive something very similar to the standard library's\n``urllib.parse.urlparse``\n\n.. code-block:: python\n\n from rfc3986 import urlparse\n\n ssh = urlparse('ssh://user@git.openstack.org:29418/openstack/glance.git')\n print(ssh.scheme) # => ssh\n print(ssh.userinfo) # => user\n print(ssh.params) # => None\n print(ssh.port) # => 29418\n\nTo create a copy of it with new pieces you can use ``copy_with``:\n\n.. code-block:: python\n\n new_ssh = ssh.copy_with(\n scheme='https'\n userinfo='',\n port=443,\n path='/openstack/glance'\n )\n print(new_ssh.scheme) # => https\n print(new_ssh.userinfo) # => None\n # etc.\n\nStrictly Parsing a URI and Applying Validation\n``````````````````````````````````````````````\n\nTo parse a URI into a convenient named tuple, you can simply:\n\n.. code-block:: python\n\n from rfc3986 import uri_reference\n\n example = uri_reference('http://example.com')\n email = uri_reference('mailto:user@domain.com')\n ssh = uri_reference('ssh://user@git.openstack.org:29418/openstack/keystone.git')\n\nWith a parsed URI you can access data about the components:\n\n.. code-block:: python\n\n print(example.scheme) # => http\n print(email.path) # => user@domain.com\n print(ssh.userinfo) # => user\n print(ssh.host) # => git.openstack.org\n print(ssh.port) # => 29418\n\nIt can also parse URIs with unicode present:\n\n.. code-block:: python\n\n uni = uri_reference(b'http://httpbin.org/get?utf8=\\xe2\\x98\\x83') # \u2603\n print(uni.query) # utf8=%E2%98%83\n\nWith a parsed URI you can also validate it:\n\n.. code-block:: python\n\n if ssh.is_valid():\n subprocess.call(['git', 'clone', ssh.unsplit()])\n\nYou can also take a parsed URI and normalize it:\n\n.. code-block:: python\n\n mangled = uri_reference('hTTp://exAMPLe.COM')\n print(mangled.scheme) # => hTTp\n print(mangled.authority) # => exAMPLe.COM\n\n normal = mangled.normalize()\n print(normal.scheme) # => http\n print(mangled.authority) # => example.com\n\nBut these two URIs are (functionally) equivalent:\n\n.. code-block:: python\n\n if normal == mangled:\n webbrowser.open(normal.unsplit())\n\nYour paths, queries, and fragments are safe with us though:\n\n.. code-block:: python\n\n mangled = uri_reference('hTTp://exAMPLe.COM/Some/reallY/biZZare/pAth')\n normal = mangled.normalize()\n assert normal == 'hTTp://exAMPLe.COM/Some/reallY/biZZare/pAth'\n assert normal == 'http://example.com/Some/reallY/biZZare/pAth'\n assert normal != 'http://example.com/some/really/bizzare/path'\n\nIf you do not actually need a real reference object and just want to normalize\nyour URI:\n\n.. code-block:: python\n\n from rfc3986 import normalize_uri\n\n assert (normalize_uri('hTTp://exAMPLe.COM/Some/reallY/biZZare/pAth') ==\n 'http://example.com/Some/reallY/biZZare/pAth')\n\nYou can also very simply validate a URI:\n\n.. code-block:: python\n\n from rfc3986 import is_valid_uri\n\n assert is_valid_uri('hTTp://exAMPLe.COM/Some/reallY/biZZare/pAth')\n\nRequiring Components\n~~~~~~~~~~~~~~~~~~~~\n\nYou can validate that a particular string is a valid URI and require\nindependent components:\n\n.. code-block:: python\n\n from rfc3986 import is_valid_uri\n\n assert is_valid_uri('http://localhost:8774/v2/resource',\n require_scheme=True,\n require_authority=True,\n require_path=True)\n\n # Assert that a mailto URI is invalid if you require an authority\n # component\n assert is_valid_uri('mailto:user@example.com', require_authority=True) is False\n\nIf you have an instance of a ``URIReference``, you can pass the same arguments\nto ``URIReference#is_valid``, e.g.,\n\n.. code-block:: python\n\n from rfc3986 import uri_reference\n\n http = uri_reference('http://localhost:8774/v2/resource')\n assert uri.is_valid(require_scheme=True,\n require_authority=True,\n require_path=True)\n\n # Assert that a mailto URI is invalid if you require an authority\n # component\n mailto = uri_reference('mailto:user@example.com')\n assert uri.is_valid(require_authority=True) is False\n\nAlternatives\n------------\n\n- `rfc3987 `_\n\n This is a direct competitor to this library, with extra features,\n licensed under the GPL.\n\n- `uritools `_\n\n This can parse URIs in the manner of RFC 3986 but provides no validation and\n only recently added Python 3 support.\n\n- Standard library's `urlparse`/`urllib.parse`\n\n The functions in these libraries can only split a URI (valid or not) and\n provide no validation.\n\nContributing\n------------\n\nThis project follows and enforces the Python Software Foundation's `Code of\nConduct `_.\n\nIf you would like to contribute but do not have a bug or feature in mind, feel\nfree to email Ian and find out how you can help.\n\nThe git repository for this project is maintained at\nhttps://github.com/python-hyper/rfc3986\n\n.. _RFC 3986: http://tools.ietf.org/html/rfc3986\n.. _Apache License Version 2.0: https://www.apache.org/licenses/LICENSE-2.0\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://rfc3986.readthedocs.io", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "rfc3986", "package_url": "https://pypi.org/project/rfc3986/", "platform": "", "project_url": "https://pypi.org/project/rfc3986/", "project_urls": { "Homepage": "http://rfc3986.readthedocs.io" }, "release_url": "https://pypi.org/project/rfc3986/1.3.2/", "requires_dist": [ "idna ; extra == 'idna2008'" ], "requires_python": "", "summary": "Validating URI References per RFC 3986", "version": "1.3.2" }, "last_serial": 5263191, "releases": { "0.0.0": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "2e158c72fb421f861f7b85e342913447", "sha256": "20fbe816de910e1090f9c257907c8d2ce4bec554c0a9a734913943cadfe5bc4f" }, "downloads": -1, "filename": "rfc3986-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "2e158c72fb421f861f7b85e342913447", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 13482, "upload_time": "2014-06-27T22:14:04", "url": "https://files.pythonhosted.org/packages/26/d6/22ada9cf61249501623ab0e719b3f79a2dd027404112eb7ce68821c3e09f/rfc3986-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f9c7f7a9084df9e4beb039a47b9903e2", "sha256": "f16bf0d1b6aa07c20fe15aa8e7ef1f92aaab4833289ab5f894aca583a45691cf" }, "downloads": -1, "filename": "rfc3986-0.1.0.tar.gz", "has_sig": false, "md5_digest": "f9c7f7a9084df9e4beb039a47b9903e2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12410, "upload_time": "2014-06-27T22:14:06", "url": "https://files.pythonhosted.org/packages/44/f7/35fff18772da90916d28a37389040dc111ccfe39f055e75d539876c4bcb9/rfc3986-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "3e43d7bef1763b6cab78f9d5ab9a5dca", "sha256": "1df90f02d7d7aca8602fd42f0ecc30f3df47ee905a3089d4f8d1b4ece0e4b36b" }, "downloads": -1, "filename": "rfc3986-0.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "3e43d7bef1763b6cab78f9d5ab9a5dca", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 15422, "upload_time": "2014-06-30T23:17:29", "url": "https://files.pythonhosted.org/packages/4e/4b/92f32ded7817540ec1d7ffd7b47325285ee472ca09ad46cdde86278349ad/rfc3986-0.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a80b964a92c3a40e57ec95f7c0d68fa9", "sha256": "8a7b3f6cfdfb969c2e876513e87c30ebe1e4bdc9fae4a63c701eee88bbec9b22" }, "downloads": -1, "filename": "rfc3986-0.2.0.tar.gz", "has_sig": false, "md5_digest": "a80b964a92c3a40e57ec95f7c0d68fa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14522, "upload_time": "2014-06-30T23:17:32", "url": "https://files.pythonhosted.org/packages/a2/5e/bc21bebe4d1a1f60f9e99f5cbc4b56248da84a8a3e92fe6f3a466f4fe1ce/rfc3986-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "fae910c72122aee2dec1799ae1db2f00", "sha256": "70bd56ebc7088c5c0792012fc9078656d78828db3a1416ae9f8377a1b6de7af5" }, "downloads": -1, "filename": "rfc3986-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "fae910c72122aee2dec1799ae1db2f00", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17408, "upload_time": "2015-03-20T14:48:20", "url": "https://files.pythonhosted.org/packages/ef/aa/35c3f45e584dfa7209582232752201e2bda902766b2e501963f7b3d45df5/rfc3986-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "84151eec209c99e71edc760745510da4", "sha256": "85aec4beb1edc4fa7cb7466cca1410237cb3e344968d07126e428bc62adb8f3c" }, "downloads": -1, "filename": "rfc3986-0.2.1.tar.gz", "has_sig": false, "md5_digest": "84151eec209c99e71edc760745510da4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17004, "upload_time": "2015-03-20T14:48:23", "url": "https://files.pythonhosted.org/packages/ba/5c/9d3844a33ac21d469116e1a4d2944dadf268c703731f48d3a11bc0179d17/rfc3986-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "6a6d89ec1d3c88b70fe7f01788809e4b", "sha256": "c22348d548b4f9c02c24afe46eb83eb4b97af1798480e642367d3c0a4770d48a" }, "downloads": -1, "filename": "rfc3986-0.2.2-py2-none-any.whl", "has_sig": false, "md5_digest": "6a6d89ec1d3c88b70fe7f01788809e4b", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 17643, "upload_time": "2015-05-27T20:18:16", "url": "https://files.pythonhosted.org/packages/23/96/bd4bd05eb6bc684dd92647765c1965a5f93c21bf9f60808017c62e4b7a23/rfc3986-0.2.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "818c7851fd49ecb83c89856a9962959e", "sha256": "b66238ee937485509326e0280eab4d8193df0e640936b99a6a181374dff97f7b" }, "downloads": -1, "filename": "rfc3986-0.2.2.tar.gz", "has_sig": false, "md5_digest": "818c7851fd49ecb83c89856a9962959e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17250, "upload_time": "2015-05-27T20:18:20", "url": "https://files.pythonhosted.org/packages/01/bd/afbc17f2b5c4f1bdf94b13b23ea257bff4bab3dc35260c703c7a1887ec79/rfc3986-0.2.2.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "009ad678dfab38ff02b939603a7c669b", "sha256": "7dd7f9a3ef2cd9ad0bc7fe1fb51f278b7571b9820070a56277923d3e6540fa46" }, "downloads": -1, "filename": "rfc3986-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "009ad678dfab38ff02b939603a7c669b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21192, "upload_time": "2015-10-20T17:16:20", "url": "https://files.pythonhosted.org/packages/04/63/631388e71a296a42c3d6c77eb5906de2ae091867201a4a1ab8a75bb93482/rfc3986-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53dfebe0f5d86b48d260bd0d00ade2cd", "sha256": "673715792042d9fb83571518c860074369b6d3610c8b48ac42f38fbc2722a48d" }, "downloads": -1, "filename": "rfc3986-0.3.0.tar.gz", "has_sig": false, "md5_digest": "53dfebe0f5d86b48d260bd0d00ade2cd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21421, "upload_time": "2015-10-20T17:16:25", "url": "https://files.pythonhosted.org/packages/d1/6e/ea517df4a3aab7ab0ebfdc4f4bba9771bf8030dc214b7acf26590a47aa0b/rfc3986-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "4da779b4038f084a0573076ed19a036e", "sha256": "5336226c70e3d25de5592761f18829911f5c44157be5943bbb7e1ec05e1827ec" }, "downloads": -1, "filename": "rfc3986-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4da779b4038f084a0573076ed19a036e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21273, "upload_time": "2015-12-06T23:40:03", "url": "https://files.pythonhosted.org/packages/64/74/ddfb13e7b7e355a1a560cfff986614f337e5d36b079a8490afb6087a59cc/rfc3986-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a0cc842d0e1b061f1b5202917095340", "sha256": "b94638db542896ccf89dc62785ec26dbcbd6a97d337f64e02615b164b974f2e5" }, "downloads": -1, "filename": "rfc3986-0.3.1.tar.gz", "has_sig": false, "md5_digest": "4a0cc842d0e1b061f1b5202917095340", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21591, "upload_time": "2015-12-06T23:40:10", "url": "https://files.pythonhosted.org/packages/97/87/87da602f3c8357c94d98f7961e85da4f7fe284753be9115286be309c2afc/rfc3986-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "ae600bbc2ab934a940ec606ba458004e", "sha256": "a30aa5b95db4a1c0d83cc966ab1e6cbe783e6972a598b2b7f6729c53c3ca4fc2" }, "downloads": -1, "filename": "rfc3986-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae600bbc2ab934a940ec606ba458004e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21715, "upload_time": "2016-08-20T14:37:20", "url": "https://files.pythonhosted.org/packages/6e/9d/3aca8de14d88c8a4a1b4c59f8e491f7750ea987bebcff7680f228915a8b6/rfc3986-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1062c2561afc3d446a189a04bbe9e9ca", "sha256": "10a85caad675f4842c98a914215f16237e0953e519119ebc31d9b10a5d1204c7" }, "downloads": -1, "filename": "rfc3986-0.4.0.tar.gz", "has_sig": false, "md5_digest": "1062c2561afc3d446a189a04bbe9e9ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22229, "upload_time": "2016-08-20T14:37:23", "url": "https://files.pythonhosted.org/packages/96/bc/d895487322dbee8897f63bfc28846eee3ff2887ee0213efccccff6e533d3/rfc3986-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "2f9ef97d706d65ad796f035458bad28a", "sha256": "6823e63264be3da1d42b3ec0e393dc8e6d03fd5e28d4291b797c76cf33759061" }, "downloads": -1, "filename": "rfc3986-0.4.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2f9ef97d706d65ad796f035458bad28a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21814, "upload_time": "2016-08-21T12:59:16", "url": "https://files.pythonhosted.org/packages/82/53/c3ee5a1869fdf5d1d02c344ed939769b886178ec7ba91d5200e1c779bc87/rfc3986-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b2b48cd36dabb82d5eaa54bbfb20d382", "sha256": "5ac85eb132fae7bbd811fa48d11984ae3104be30d44d397a351d004c633a68d2" }, "downloads": -1, "filename": "rfc3986-0.4.1.tar.gz", "has_sig": false, "md5_digest": "b2b48cd36dabb82d5eaa54bbfb20d382", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22354, "upload_time": "2016-08-21T12:59:19", "url": "https://files.pythonhosted.org/packages/17/b6/f2d5df2e369142010fb5d91b12a962643e1a2d3578b04ff22276a5c53238/rfc3986-0.4.1.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1eda01678efa61bc36ad422bd198bc88", "sha256": "e2c08dd16e2cb142beedc06611239767921ff6f1fac2672f74688479bdc10972" }, "downloads": -1, "filename": "rfc3986-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1eda01678efa61bc36ad422bd198bc88", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 28194, "upload_time": "2017-05-10T11:59:43", "url": "https://files.pythonhosted.org/packages/03/7e/bc09e5e3762616482f3abbc3320e8e5bf000b7b5a6225f683e4c86833daa/rfc3986-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cf5cd76d8c3cc3e0ae267e5fe3515db9", "sha256": "2faacfabcc13ed89b061b5f21cbbf330f82400654b317b5907d311c3478ec4c4" }, "downloads": -1, "filename": "rfc3986-1.0.0.tar.gz", "has_sig": false, "md5_digest": "cf5cd76d8c3cc3e0ae267e5fe3515db9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37659, "upload_time": "2017-05-10T11:59:45", "url": "https://files.pythonhosted.org/packages/52/ee/d5136880f56124317fb4d9ce5cb39286802585ea908d2b6d7cba48d9c5d1/rfc3986-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "5fb5794dbe23ce2693106c022deb41cb", "sha256": "632b8fcd2ac37f24334316227f909be4f9d0738cbf409404cff6fa5f69a24093" }, "downloads": -1, "filename": "rfc3986-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5fb5794dbe23ce2693106c022deb41cb", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 29066, "upload_time": "2017-07-18T12:18:19", "url": "https://files.pythonhosted.org/packages/01/2f/dc440bae2b6a185654b5c298f5cc7b172267db692bc24923130262caedac/rfc3986-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fca89d6e949c31922ef82422ace66842", "sha256": "8458571c4c57e1cf23593ad860bb601b6a604df6217f829c2bc70dc4b5af941b" }, "downloads": -1, "filename": "rfc3986-1.1.0.tar.gz", "has_sig": false, "md5_digest": "fca89d6e949c31922ef82422ace66842", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39381, "upload_time": "2017-07-18T12:18:21", "url": "https://files.pythonhosted.org/packages/4b/f6/8f0a24e50454494b0736fe02e6617e7436f2b30148b8f062462177e2ca2d/rfc3986-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "055e1fa1df1ede51eb3532b954f6ae4b", "sha256": "5ad82677b02b88c8d24f6511b4ee9baa5e7da675599b479fbbc5c9c578b5b737" }, "downloads": -1, "filename": "rfc3986-1.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "055e1fa1df1ede51eb3532b954f6ae4b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 27430, "upload_time": "2018-12-04T14:03:46", "url": "https://files.pythonhosted.org/packages/e1/59/1d547e9e5e1bf8074951067c3d6b31a2e29fd5b49bd7d32e53ff0da6406c/rfc3986-1.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aceda62ad18a333b9645771f77b07c46", "sha256": "bc3ae4b7cd88a99eff2d3900fcb858d44562fd7f273fc07aeef568b9bb6fc4e1" }, "downloads": -1, "filename": "rfc3986-1.2.0.tar.gz", "has_sig": false, "md5_digest": "aceda62ad18a333b9645771f77b07c46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40162, "upload_time": "2018-12-04T14:03:48", "url": "https://files.pythonhosted.org/packages/e1/f0/d1571e8891e8e93ebb0fc61fb09c04acf0088bab3fa1cb02eb577e7bc135/rfc3986-1.2.0.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "22516d1371286e66a6471ee1bab3807c", "sha256": "5ec984c915ce01ec6c4ebe37ade6a3a8cee6856bfd4facf459799b52142ef978" }, "downloads": -1, "filename": "rfc3986-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "22516d1371286e66a6471ee1bab3807c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31346, "upload_time": "2019-04-20T20:33:23", "url": "https://files.pythonhosted.org/packages/71/3e/2171b66145c6a74a94d80e4e6f4dbc5ff08d3add68062a2c426cfbbe402f/rfc3986-1.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4df3f7b7e35a070272a96a448ad1f76d", "sha256": "a9945150c91f3680797eb36c451c7c26d034125b4b320d4f02962bad6fcf52a7" }, "downloads": -1, "filename": "rfc3986-1.3.0.tar.gz", "has_sig": false, "md5_digest": "4df3f7b7e35a070272a96a448ad1f76d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44011, "upload_time": "2019-04-20T20:33:24", "url": "https://files.pythonhosted.org/packages/8b/5f/452af943db1ee24875fd1c51b5ce15c0e4e0b1340ffc72ff8f199af90382/rfc3986-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "502a9fedca76cf60ffae2dcd94aa7a13", "sha256": "a69146f5014a7da1fed9d375c99f5fe2782a27c0e75c778a4083fe954abbde42" }, "downloads": -1, "filename": "rfc3986-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "502a9fedca76cf60ffae2dcd94aa7a13", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31389, "upload_time": "2019-04-24T00:25:51", "url": "https://files.pythonhosted.org/packages/a8/1e/648eed6ea17d1de1585c7a534e765104818eaa16c74ff6cfd3951caeefee/rfc3986-1.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "162644c4ee77c5736086e270161842c2", "sha256": "2cb285760d8ed6683f9a242686961918d555f6783027d596cb82df51bfa0f9ca" }, "downloads": -1, "filename": "rfc3986-1.3.1.tar.gz", "has_sig": false, "md5_digest": "162644c4ee77c5736086e270161842c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 46593, "upload_time": "2019-04-24T00:25:53", "url": "https://files.pythonhosted.org/packages/84/87/ce68f4ad914d3a312c7fbb797d6b273d51037a02e0d40f622fccd41ead0f/rfc3986-1.3.1.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "9ea567cbcb76784be79bb448de42d6fa", "sha256": "df4eba676077cefb86450c8f60121b9ae04b94f65f85b69f3f731af0516b7b18" }, "downloads": -1, "filename": "rfc3986-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9ea567cbcb76784be79bb448de42d6fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31305, "upload_time": "2019-05-13T15:58:35", "url": "https://files.pythonhosted.org/packages/00/8d/9d56bfe43997f1864fe0891be69bc239ded98e69c9f56eb9eaa5b1789660/rfc3986-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b6d009806a94d418c82d48219a256de", "sha256": "0344d0bd428126ce554e7ca2b61787b6a28d2bbd19fc70ed2dd85efe31176405" }, "downloads": -1, "filename": "rfc3986-1.3.2.tar.gz", "has_sig": false, "md5_digest": "5b6d009806a94d418c82d48219a256de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44225, "upload_time": "2019-05-13T15:58:36", "url": "https://files.pythonhosted.org/packages/34/c9/bcba83f13f628e947e23a0e54e18d0a6f13e5d03ca4ec04def0105c81bfc/rfc3986-1.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9ea567cbcb76784be79bb448de42d6fa", "sha256": "df4eba676077cefb86450c8f60121b9ae04b94f65f85b69f3f731af0516b7b18" }, "downloads": -1, "filename": "rfc3986-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9ea567cbcb76784be79bb448de42d6fa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 31305, "upload_time": "2019-05-13T15:58:35", "url": "https://files.pythonhosted.org/packages/00/8d/9d56bfe43997f1864fe0891be69bc239ded98e69c9f56eb9eaa5b1789660/rfc3986-1.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5b6d009806a94d418c82d48219a256de", "sha256": "0344d0bd428126ce554e7ca2b61787b6a28d2bbd19fc70ed2dd85efe31176405" }, "downloads": -1, "filename": "rfc3986-1.3.2.tar.gz", "has_sig": false, "md5_digest": "5b6d009806a94d418c82d48219a256de", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44225, "upload_time": "2019-05-13T15:58:36", "url": "https://files.pythonhosted.org/packages/34/c9/bcba83f13f628e947e23a0e54e18d0a6f13e5d03ca4ec04def0105c81bfc/rfc3986-1.3.2.tar.gz" } ] }