Skip to content

34 support upsert into empty documents without sentinel workaround#35

Merged
nathanjmcdougall merged 10 commits into
mainfrom
34-support-upsert-into-empty-documents-without-sentinel-workaround
May 21, 2026
Merged

34 support upsert into empty documents without sentinel workaround#35
nathanjmcdougall merged 10 commits into
mainfrom
34-support-upsert-into-empty-documents-without-sentinel-workaround

Conversation

@nathanjmcdougall
Copy link
Copy Markdown
Collaborator

No description provided.

@nathanjmcdougall nathanjmcdougall linked an issue May 21, 2026 that may be closed by this pull request
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds first-class support for mutating “empty” YAML documents (no root data node) so that structure-creating operations (upsert, add, and therefore sync) can bootstrap a root mapping without requiring a sentinel workaround (Issue #34).

Changes:

  • Extend Document.add() / Document.upsert() to detect empty documents and bootstrap root mappings when creating new paths.
  • Introduce a new native helper _core.serialize_value() (Rust → Python) to serialize Python values to YAML for bootstrapping.
  • Add test coverage for mutations and error cases on empty / whitespace-only / comment-only documents, plus a design spec describing the approach.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tests/test_document.py Adds tests for upsert/add/sync behavior on empty documents and verifies expected errors.
src/yamltrip/document.py Implements empty-document detection and bootstrapping logic for add()/upsert().
src/yamltrip/_core.pyi Updates native module stubs to expose serialize_value.
src/lib.rs Exposes serialize_value from the Rust _core module to Python.
src/convert.rs Implements serialize_value using existing Python→YAML conversion + serde_yaml.
doc/specs/2026-05-22-empty-document-mutations-design.md Documents the design/behavior for empty-document mutations (Issue #34).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/yamltrip/document.py
Comment thread src/convert.rs Outdated
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated no new comments.

@nathanjmcdougall nathanjmcdougall merged commit 4c624c9 into main May 21, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support upsert into empty documents without sentinel workaround

2 participants