import re try: from urllib.parse import urlencode except ImportError: from urllib import urlencode def join_url(url, *paths): """ Joins individual URL strings together, and returns a single string. Usage:: >>> utils.join_url("pillar:5000", "shots") pillar:5000/shots """ for path in paths: url = re.sub(r'/?$', re.sub(r'^/?', '/', path), url) return url def join_url_params(url, params): """Constructs a query string from a dictionary and appends it to a url. Usage:: >>> utils.join_url_params("pillar:5000/shots", {"page-id": 2, "NodeType": "Shot Group"}) pillar:5000/shots?page-id=2&NodeType=Shot+Group """ return url + "?" + urlencode(params) def merge_dict(data, *override): """ Merges any number of dictionaries together, and returns a single dictionary. Usage:: >>> utils.merge_dict({"foo": "bar"}, {1: 2}, {"foo1": "bar2"}) {1: 2, 'foo': 'bar', 'foo1': 'bar2'} """ result = {} for current_dict in (data,) + override: result.update(current_dict) return result