Repository navigation
v0.2.3
Fixed
-
Composite paths no longer drop backend-specific keyword arguments.
CompositePosixPath.symlink_to()accepted only the stdlib signature and
forwarded nothing else, so a backend's documented extension was unreachable
through the very abstraction meant to expose it — a path obtained from
host.path()raisedTypeError: unexpected keyword argument 'force'even
when the selected backend implementedforce=.Forwarding is signature-aware rather than blind: the selected backend's
method is inspected, and only keywords it declares are passed through.
Anything else still raisesTypeErrorat the composite boundary, naming
the backend class and the rejected keyword. Blind passthrough would have
turned a clear error at the abstraction boundary into a confusing one from
inside a transport, and the existing contract — a backend lacking a
capability raisesNotImplementedError, never a silent no-op — is
unchanged. A method whose signature cannot be introspected (a C function,
afunctools.partial) receives the keywords, since an error from it is no
worse than calling it directly.Applied to
mkdir(),chmod(),unlink(), andrmdir()alongside
symlink_to(), since the same normalization affected each of them.This pairs with
pathlib_next'ssymlink_to(force=), which that project
exposes as a genericPathextension over a_symlink_to()backend
primitive. No version floor change: hostctl'spathlib_next>=0.8.6floor
stays where it is, soforce=is forwarded when the installed version
provides it and rejected at the boundary when it does not.
Full Changelog: v0.2.2...v0.2.3