docker_launch.utils

groupby(objects, key)[source]

Group list of dictionaries by values of its specific key.

You can safely specify possibly missing key. See the example below.

Examples

>>> groupby([{"a": 1, "b": 2}, {"a": 5, "b": 2}, {"a": 1, "b": 7}], "a")
{1: [{"a": 1, "b": 2},  {"a": 1, "b": 7}], 5: [{"a": 5, "b": 2}]}
>>> groupby([{"a": 1, "b": 2}, {"b": 2}, {"a": 1, "b": 7}], "a")
{"": [{"b": 2}], 1: [{"a": 1, "b": 2}, {"a": 1, "b": 7}]}
>>> groupby([{"a": 1, "b": 2}, {"a": 5, "b": 2}, {"a": 1, "b": 7}], "c")
{"": [{"a": 1, "b": 2}, {"a": 5, "b": 2}, {"a": 1, "b": 7}]}
Parameters
  • objects (List[Dict[Hashable, Any]]) –

  • key (Hashable) –

Return type

Dict[Hashable, List[Dict[Hashable, Any]]]

parse_address(address, username=None)[source]

Parse IP address, either in format user@ipaddr or separately provided.

Raises

ValueError – If address is given in username@ipaddr format but inconsistent username is given as separate argument.

Parameters
  • address (str) –

  • username (Optional[str]) –

Return type

Tuple[str, str]

Examples

>>> parse_address("user@172.29.0.0")
("172.29.0.0", "user")
>>> parse_address("172.29.0.0", "user")
("172.29.0.0", "user")
>>> parse_address("172.29.0.0")
("172.29.0.0", None)
is_ip_address(address)[source]

Check if the input is IP address or not.

Examples

>>> is_ip_address("172.29.0.0")
True
>>> is_ip_address("user@172.29.0.0")
True
>>> is_ip_address("localhost")
False
Parameters

address (str) –

Return type

bool

resolve_base_url(machine=None)[source]

Base URL for Docker client.

Examples

>>> _resolve_base_url("user@172.29.0.0")
'ssh://user@172.29.0.0'
>>> _resolve_base_url("localhost")
None
Parameters

machine (Optional[str]) –

Return type

str