Repository navigation
v0.8.6
Fixed
PathSyncer.sync()raisedTypeErrorinstead of honoring
ignore_error.sync()'signore_errorparameter defaulted to the bool
Falseand the symlink branch called it directly, so
PathSyncer(ignore_error=True).sync(src, dst)on a symlink source raised
TypeError: 'bool' object is not callablerather than the intended
NotImplementedError. The parameter now defaults toNone, meaning "use
the policy given to__init__" -- it no longer silently shadows a
constructor-supplied policy -- and every branch consults one resolved
callable. Passing a callable explicitly behaves exactly as before.Path.copy()now accepts a bool forignore_error, matching
Path.rm()'s bool-or-callable contract. Previously only a callable or
Nonewas handled, socopy(recursive=True, ignore_error=True)broke as
soon as a child copy failed.Nonekeeps its documented meaning (fail on
the first error), and a callable remains a notification hook whose return
value is not consulted, so existing handlers such aserrors.appendare
unaffected.- Downstream
Pathsubclasses resolved stdlibpathliboperations
instead of pathlib_next's. Concrete path classes mix apathlibclass
withpathlib_next.Path, so the MRO decided which library implemented a
method -- and which one won changed with the interpreter version. On
Python 3.14 the new stdlibcopy()/move()displaced ours, crashing with
AttributeError: ... has no attribute '_copy_from'on non-local backends
and silently applying stdlib's different timestamp semantics on local
ones (making mtime-based syncs converge on 3.14 but never on <=3.13). In
the opposite direction, older stdlib lacked keywords this library's
protocols promise:exists(follow_symlinks=)(3.12+),
read_text/write_text'snewline=(3.13+), andrglob's
include_hidden=/recursive=/dironly=extensions (never in stdlib), all
raisingTypeErroron the 3.9 floor.Path.__init_subclass__now
re-asserts the pathlib_next implementation ofcopy,move,exists,
rglob,read_textandwrite_textfor any subclass that would otherwise
inherit stdlib's, so downstream implementers get correct behavior without
hand-written forwarding methods. A subclass or mixin that defines one of
these operations itself is never displaced.
Changed
utils.as_error_handler()centralizesignore_errorbool-to-callable
normalization. Callable arities remain deliberately different per call
site (rm->(error, path),copy->(error),PathSyncer->
(error, source, target, event)); only the bool case is normalized, so no
public signature changed.
Full Changelog: v0.8.5...v0.8.6