Utilities¶
- class batou.utils.Address(connect_address, port=None, require_v4=<object object>, require_v6=<object object>)¶
An internet service address that can be listened and connected to.
The constructor address is expected to be the address that can be connected to. The listen address will be computed automatically.
>>> x = Address('localhost', 80) >>> str(x.connect) 'localhost:80' >>> str(x.listen) '127.0.0.1:80'
You can specify which IP versions are expected to be resolved for listen addresses in three ways with the require_v4/require_v6 flags:
False -> this version must not be used
True -> this version must be resolved properly
- ‘optional’ -> the listen/listen_v6 attribute will contain None if it does
not resolve.
- connect: NetLoc¶
The connect address as it should be used when configuring clients. This is a
batou.utils.NetLoc
object.
- property listen¶
The IPv4 listen (or bind) address as it should be used when configuring servers. This is a
batou.utils.NetLoc
object. It raises anbatou.IPAddressConfigurationError
if used unconfigured.
- property listen_v6¶
The IPv6 listen (or bind) address as it should be used when configuring servers. This is a
batou.utils.NetLoc
object. It raises anbatou.IPAddressConfigurationError
if used unconfigured.
- class batou.utils.BagOfAttributes¶
Provide a dict-like object that can also be accessed using attributes.
It’s sometimes more convenient to write a.x instead of a[‘x’]. However, namespaces may require being able to also use non-Python-identifier keys.
- exception batou.utils.CmdExecutionError(cmd, returncode, stdout, stderr)¶
- exception batou.utils.CycleError¶
- class batou.utils.NetLoc(host, port=None)¶
A network location specified by host and port.
Network locations can automatically render an appropriate string representation:
>>> x = NetLoc('127.0.0.1') >>> x.host '127.0.0.1' >>> x.port None >>> str(x) '127.0.0.1' >>> y = NetLoc('127.0.0.1', 80) >>> str(y) '127.0.0.1:80'
- host: str¶
The host part of this network location. Can be a hostname or IP address.
- port = None¶
The port of this network location. Can be
None
or an integer.
- batou.utils.call_with_optional_args(func, **kw)¶
Provide a way to perform backwards-compatible call, passing only arguments that the function actually expects.
- batou.utils.dict_merge(a, b)¶
recursively merges dict’s. not just simple a[‘key’] = b[‘key’], if both a and b have a key who’s value is a dict then dict_merge is called on both values and the result stored in the returned dictionary. https://www.xormedia.com/recursively-merge-dictionaries-in-python/
- batou.utils.export_environment_variables(environ)¶
Turn this dict into shell environment variable exports.
This creates a snippet that can be embedded into a shell script to access all entries of this dict as environment variables.
Ensures proper quoting.
- batou.utils.format_duration(duration: Optional[float]) str ¶
Formats a duration (in seconds) into a human readable string.
Examples:
` format_duration(1.23124) == "1.23s" format_duration(61) == "1m1s" format_duration(None) == "NaN" `