v0.0.13
What's Changed
Added
GroverObjectBase.clone()— Fast (~1.7µs) method to create a detached copy of a model instance with independent SQLAlchemy state. Uses shallow copy + freshInstanceStateso clones can be safely added to any session.
Fixed
write(objects=...)no longer mutates input objects —_group_objects_by_terminalnow clones objects before stripping mount prefixes, preserving the caller's original list.add_prefixpath normalization — Prefixes are now normalized vianormalize_path()before concatenation, ensuring paths always have a leading/regardless of prefix format.strip_prefixsafety — Now validates the prefix matches the start of the path and raisesValueErroron mismatch instead of blindly slicing. Prefixes are normalized before comparison._rederive_path_fieldsnormalization — Callsnormalize_path()as a safety net, guaranteeing all post-mutation paths are valid before reaching the database.
Full Changelog: v0.0.12...v0.0.13