A robust connection URI parser/stringifier - for Python.
Project description
connection-uri
A robust connection URI parser/stringifier - for Python.
Introduction
This connection URI library was implemented in lack of robust Python alternatives. This one supports absolute/relative multi-host connection URIs with smart fallbacks.
Install
Install using pip:
$ pip install connection-uri
Use
Very basic example:
import connection_uri
basic_connection_uri = 'localhost:3000/namespace/foo/'
basic_connection_options = connection_uri.unpack(basic_connection_uri)
print('\nconnection_uri.unpack({0})\n\n{1}\n'.format(basic_connection_uri, basic_connection_options))
#
# {
# 'protocol': 'http',
# 'auth': None,
#
# 'endpoint': 'localhost:3000',
# 'endpoints': ['localhost:3000'],
#
# 'host': 'localhost',
# 'hosts': ['localhost'],
#
# 'port': 3000,
# 'ports': [3000],
# 'path': '/namespace/foo/',
# 'query': {},
#
# 'credentials': {
# 'username': None,
# 'password': None,
# },
# 'key': 'namespace/foo',
# 'namespace': 'namespace/foo',
#
# 'url': 'http://localhost:3000/namespace/foo/',
# 'urls': [
# 'http://localhost:3000/namespace/foo/'
# ],
# }
#
basic_connection_uri = connection_uri.pack(basic_connection_options)
print('\nconnection_uri.pack({0})\n\n{1}\n'.format(basic_connection_options, basic_connection_uri))
#
# 'http://localhost:3000/namespace/foo/'
#
print('---')
complex_multihost_uri = 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz'
complex_multihost_options = connection_uri.unpack(complex_multihost_uri)
print('\nconnection_uri.unpack({0})\n\n{1}\n'.format(complex_multihost_uri, complex_multihost_options))
#
# {
# 'protocol': 'foo',
# 'auth': 'm+4.gTe~5e^(:m+4.gTe~5e^(',
#
# 'host': 'ds143144-a0.mlab.com',
# 'port': 43144,
#
# 'endpoint': 'ds143144-a0.mlab.com:43144',
# 'endpoints': ['ds143144-a0.mlab.com:43144', 'ds143144-a1.mlab.com:43145'],
#
# 'host': 'ds143144-a0.mlab.com',
# 'hosts': ['ds143144-a0.mlab.com', 'ds143144-a1.mlab.com'],
#
# 'port': 43144,
# 'ports': [43144, 43145],
#
# 'path': '/bar-baz',
# 'query': {},
#
# 'credentials': {
# 'username': 'm+4.gTe~5e^(',
# 'password': 'm+4.gTe~5e^(',
# },
# 'key': 'bar-baz',
# 'namespace': 'bar-baz',
#
# 'url': 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz',
# 'urls': [
# 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144/bar-baz',
# 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a1.mlab.com:43145/bar-baz'
# ],
# }
#
complex_multihost_uri = connection_uri.pack(complex_multihost_options)
print('\nconnection_uri.pack({0})\n\n{1}\n'.format(complex_multihost_options, complex_multihost_uri))
#
# 'foo://m+4.gTe~5e^(:m+4.gTe~5e^(@ds143144-a0.mlab.com:43144,ds143144-a1.mlab.com:43145/bar-baz'
#
# NOTE: see tests for more advanced examples, e.g. the library handles absolute and relative URIs, etc.
Test
Clone down source code:
$ make install
Run colorful tests, with only native environment (dependency sandboxing up to you):
$ make test
Run less colorful tests, with multi-environment (using tox):
$ make test-tox
About
This project was mainly initiated - in lack of solid existing alternatives - to be used at our work at Markable.ai to have common code conventions between various programming environments where Python (research, CV, AI) is heavily used.
License
Released under the MIT license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for connection_uri-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36b099b7aa2b3c831ef867bbd1d08f12247dd72aa8f6a22560c5f5d05937a257 |
|
MD5 | 4b30f033f12ba79e7d5c3680eb6e8c5b |
|
BLAKE2b-256 | dd5f55b839cb2cf28c7e4401ad80ee7c9aa5c0bb3d9a114f1ff0b3329ee31774 |