Conversation
- Move all regex patterns from path_patterns.py into path_utils.py - Export PathPatterns class from path_utils for backward compatibility - Update all imports across codebase to use path_utils - Add comprehensive documentation for each regex pattern - Add is_yaml_file() helper function This consolidation improves code organization by keeping all path-related utilities in a single module. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Implement two-stage processing model: - Stage 1 (eager): Expand % raw references during update() - Stage 2 (lazy): Resolve @ references during resolve() This enables safe config composition and pruning workflows where raw references are expanded before deletion operators are applied. Key changes: - Add process_raw_refs() method to Preprocessor for eager expansion - Add _contains_raw_refs() optimization to skip unnecessary traversal - Call process_raw_refs() in Config.update() before merging - Comprehensive documentation of two-stage processing model This fixes the Lighter use case where configs reference system sections that are later pruned/deleted. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Update all examples from Config.load() to Config().update() pattern: - README.md quick start example - All examples in docs/user-guide/advanced.md - All examples in docs/user-guide/expressions.md - All examples in docs/user-guide/instantiation.md This clarifies the two-step initialization and update process, making the eager/lazy processing stages more explicit. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive tests for two-stage processing: - test_eager_raw_reference_expansion: Verify % refs expand during update() - test_pruning_with_raw_references: Test the Lighter use case - Update import statements to use path_utils These tests ensure that raw references are expanded before deletion operators, enabling safe config composition and pruning workflows. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
- Fix ignoreLabels formatting in GitHub workflow (use block scalar) - Update uv.lock after dependency changes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Introduces a two-stage reference processing model that enables safer config composition workflows, particularly for config pruning scenarios.
Key Changes:
%ref) now expand eagerly duringupdate()instead of lazily duringresolve()Preprocessorclass handles raw reference expansion before Item creationpath_utilsWhy this matters:
Previously, both
@refand%refresolved lazily. This made patterns like "copy value then delete source" impossible:With lazy resolution, the reference would fail because
systemwas deleted. Now%references expand immediately duringupdate(), so deletion happens safely afterward.Processing stages:
update()):%raw references expand and copy valuesresolve()):@resolved references and$expressions evaluateThis separation maintains backward compatibility while enabling advanced config composition patterns.