{ "info": { "author": "Jonas Grimfelt", "author_email": "grimen@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 3", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries" ], "description": "\n# `connection-uri` [![PyPI version](https://badge.fury.io/py/connection-uri.svg)](https://badge.fury.io/py/connection-uri) [![Build Status](https://travis-ci.com/grimen/python-connection-uri.svg?branch=master)](https://travis-ci.com/grimen/python-connection-uri) [![Coverage Status](https://codecov.io/gh/grimen/python-connection-uri/branch/master/graph/badge.svg)](https://codecov.io/gh/grimen/python-connection-uri)\n\n*A robust connection URI parser/stringifier - for Python.*\n\n## Introduction\n\nThis connection URI library was implemented in lack of robust Python alternatives. This one supports absolute/relative multi-host connection URIs with smart fallbacks.\n\n\n## Install\n\nInstall using **pip**:\n\n```sh\n$ pip install connection-uri\n```\n\n\n## Use\n\nVery basic **[example](https://github.com/grimen/python-connection-uri/tree/master/examples/basic.py)**:\n\n```python\nimport connection_uri\n\nbasic_connection_uri = 'localhost:3000/namespace/foo/'\nbasic_connection_options = connection_uri.unpack(basic_connection_uri)\n\nprint('\\nconnection_uri.unpack({0})\\n\\n{1}\\n'.format(basic_connection_uri, basic_connection_options))\n#\n# {\n# 'protocol': 'http',\n# 'auth': None,\n#\n# 'endpoint': 'localhost:3000',\n# 'endpoints': ['localhost:3000'],\n#\n# 'host': 'localhost',\n# 'hosts': ['localhost'],\n#\n# 'port': 3000,\n# 'ports': [3000],\n\n# 'path': '/namespace/foo/',\n# 'query': {},\n#\n# 'credentials': {\n# 'username': None,\n# 'password': None,\n# },\n# 'key': 'namespace/foo',\n# 'namespace': 'namespace/foo',\n#\n# 'url': 'http://localhost:3000/namespace/foo/',\n# 'urls': [\n# 'http://localhost:3000/namespace/foo/'\n# ],\n# }\n#\n\nbasic_connection_uri = connection_uri.pack(basic_connection_options)\n\nprint('\\nconnection_uri.pack({0})\\n\\n{1}\\n'.format(basic_connection_options, basic_connection_uri))\n#\n# 'http://localhost:3000/namespace/foo/'\n#\n\nprint('---')\n\ncomplex_multihost_uri = 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz'\ncomplex_multihost_options = connection_uri.unpack(complex_multihost_uri)\n\nprint('\\nconnection_uri.unpack({0})\\n\\n{1}\\n'.format(complex_multihost_uri, complex_multihost_options))\n#\n# {\n# 'protocol': 'foo',\n# 'auth': 'm+4.gTe~5e^(:m+4.gTe~5e^(',\n#\n# 'host': 'ds143144-a0.mlab.com',\n# 'port': 43144,\n#\n# 'endpoint': 'ds143144-a0.mlab.com:43144',\n# 'endpoints': ['ds143144-a0.mlab.com:43144', 'ds143144-a1.mlab.com:43145'],\n#\n# 'host': 'ds143144-a0.mlab.com',\n# 'hosts': ['ds143144-a0.mlab.com', 'ds143144-a1.mlab.com'],\n#\n# 'port': 43144,\n# 'ports': [43144, 43145],\n#\n# 'path': '/bar-baz',\n# 'query': {},\n#\n# 'credentials': {\n# 'username': 'm+4.gTe~5e^(',\n# 'password': 'm+4.gTe~5e^(',\n# },\n# 'key': 'bar-baz',\n# 'namespace': 'bar-baz',\n#\n# 'url': 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz',\n# 'urls': [\n# 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144/bar-baz',\n# 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a1.mlab.com:43145/bar-baz'\n# ],\n# }\n#\n\ncomplex_multihost_uri = connection_uri.pack(complex_multihost_options)\n\nprint('\\nconnection_uri.pack({0})\\n\\n{1}\\n'.format(complex_multihost_options, complex_multihost_uri))\n#\n# 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz'\n#\n\n# NOTE: see tests for more advanced examples, e.g. the library handles absolute and relative URIs, etc.\n\n```\n\n\n## Test\n\nClone down source code:\n\n```sh\n$ make install\n```\n\nRun **colorful tests**, with only native environment (dependency sandboxing up to you):\n\n```sh\n$ make test\n```\n\nRun **less colorful tests**, with **multi-environment** (using **tox**):\n\n```sh\n$ make test-tox\n```\n\n\n## About\n\nThis project was mainly initiated - in lack of solid existing alternatives - to be used at our work at **[Markable.ai](https://markable.ai)** to have common code conventions between various programming environments where **Python** (research, CV, AI) is heavily used.\n\n\n## License\n\nReleased under the MIT license.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/grimen/python-connection_uri", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/grimen/python-connection_uri", "keywords": "connection-uri,connection-url,database-uri,database-url,server-uri,server-url,connection,database,server,uri,url,serializer,deserializer,packer,unpacker,stringifier,parser,multi-host", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "connection-uri", "package_url": "https://pypi.org/project/connection-uri/", "platform": "", "project_url": "https://pypi.org/project/connection-uri/", "project_urls": { "Download": "https://github.com/grimen/python-connection_uri", "Homepage": "https://github.com/grimen/python-connection_uri", "bugs": "https://github.com/grimen/python-connection_uri/issues", "repository": "https://github.com/grimen/python-connection_uri" }, "release_url": "https://pypi.org/project/connection-uri/0.1.1/", "requires_dist": [ "six (>=1.11.0)", "rootpath (>=0.1.0)", "inspecta (>=0.1.0)", "mybad (>=0.1.0)", "pyyaml (>=3.13)", "colour-runner (>=0.0.5)", "deepdiff (>=3.3.0)", "tox (>=3.0.0)", "coverage (>=4.5.2)", "codecov (>=2.0.15)" ], "requires_python": "", "summary": "A robust connection URI parser/stringifier - for Python.", "version": "0.1.1" }, "last_serial": 4921035, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "dbbfb2e3f08961c3677c52501533b9c3", "sha256": "97e47eb7f3ac166e16fcb9ac6b8fa74f21514d44ac3d7fca275d4c05e1acd70f" }, "downloads": -1, "filename": "connection_uri-0.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "dbbfb2e3f08961c3677c52501533b9c3", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 16039, "upload_time": "2019-02-05T04:20:44", "url": "https://files.pythonhosted.org/packages/64/1c/b2b541950abf48cd5fa5cba95306a42268138fbdf0dbfefc9ca332229dbe/connection_uri-0.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2679b4e387fd12c5a368bf0721844752", "sha256": "68a1cbd7c0753504977456c2ce1a92327166e3ccac69d855f32ca4606119e5fa" }, "downloads": -1, "filename": "connection_uri-0.1.0.tar.gz", "has_sig": false, "md5_digest": "2679b4e387fd12c5a368bf0721844752", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15805, "upload_time": "2019-02-05T04:20:46", "url": "https://files.pythonhosted.org/packages/6e/c8/a05fae94d2ae11d341e4ae0a6b6db5d070b180f7efbae6ceefcae8591619/connection_uri-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "4b30f033f12ba79e7d5c3680eb6e8c5b", "sha256": "36b099b7aa2b3c831ef867bbd1d08f12247dd72aa8f6a22560c5f5d05937a257" }, "downloads": -1, "filename": "connection_uri-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4b30f033f12ba79e7d5c3680eb6e8c5b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16106, "upload_time": "2019-03-10T11:09:04", "url": "https://files.pythonhosted.org/packages/dd/5f/55b839cb2cf28c7e4401ad80ee7c9aa5c0bb3d9a114f1ff0b3329ee31774/connection_uri-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bfd971660bd89484e9eefb374eb31ed3", "sha256": "49788ef903b29276d400b5911d8b2a8cc9b2eb78b6fd67443b4f7bf0de131b91" }, "downloads": -1, "filename": "connection_uri-0.1.1.tar.gz", "has_sig": false, "md5_digest": "bfd971660bd89484e9eefb374eb31ed3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16142, "upload_time": "2019-03-10T11:09:06", "url": "https://files.pythonhosted.org/packages/e9/ac/a1e0b957e7096e7b0ea685b503af30ee978f908e29105f8543cab30c44a5/connection_uri-0.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b30f033f12ba79e7d5c3680eb6e8c5b", "sha256": "36b099b7aa2b3c831ef867bbd1d08f12247dd72aa8f6a22560c5f5d05937a257" }, "downloads": -1, "filename": "connection_uri-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4b30f033f12ba79e7d5c3680eb6e8c5b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 16106, "upload_time": "2019-03-10T11:09:04", "url": "https://files.pythonhosted.org/packages/dd/5f/55b839cb2cf28c7e4401ad80ee7c9aa5c0bb3d9a114f1ff0b3329ee31774/connection_uri-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bfd971660bd89484e9eefb374eb31ed3", "sha256": "49788ef903b29276d400b5911d8b2a8cc9b2eb78b6fd67443b4f7bf0de131b91" }, "downloads": -1, "filename": "connection_uri-0.1.1.tar.gz", "has_sig": false, "md5_digest": "bfd971660bd89484e9eefb374eb31ed3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16142, "upload_time": "2019-03-10T11:09:06", "url": "https://files.pythonhosted.org/packages/e9/ac/a1e0b957e7096e7b0ea685b503af30ee978f908e29105f8543cab30c44a5/connection_uri-0.1.1.tar.gz" } ] }