Version 0.9.1 == Added == - Added a mechanism for "locking" connections to certain machines. This can be used, for example, to ensure exlusive access to a certain board. See `tbot_contrib.locking` for details. - `Path.rmdir()` and `Path.unlink()`: Methods to conveniently delete an empty directory, a symlink, or a file from a host's filesystem. - `Path.mkdir()`: Method to conveniently create a directory on the respective machine. - `Path.at_host(host)`: A method to safely convert a tbot-path into a plain string. The `host` parameter is used to check that the `Path` is actually meant for the expected host. Any uses of the (unofficial) `_local_str()` method should be replaced by `at_host()` as the former will be removed soon. - New classes `AppendStdout`, `AppendStderr`, and `AppendBoth` in `machine.linux` allow to append command output to files in `exec()` and `exec0()` methods. - Added a feature to the `Context` to allow reconfiguring a context temporarily (`Context.reconfigure()`). This is useful to e.g. enable `keep_alive` mode for certain tests. == Changed == - Warnings emitted due to problems when parsing the SSH config now include hints about the actual problem. - `linux.Path` no longer inherits from `pathlib.PurePosixPath`. This fixes a number of long standing oddities where certain methods would not function correctly. All API from `PurePosixPath` has been reimplemented in `linux.Path` explictly, now with the proper behavior. == Fixed == - Fixed the `PyserialConnector` not working properly with tbot contexts. - Fixed `linux.Background` not properly redirecting stderr output.