Skip to content

Add Literal type for indented_text() style parameter (#189)#241

Merged
jtdub merged 1 commit intonextfrom
issue-189-literal-style-next
Mar 26, 2026
Merged

Add Literal type for indented_text() style parameter (#189)#241
jtdub merged 1 commit intonextfrom
issue-189-literal-style-next

Conversation

@jtdub
Copy link
Contributor

@jtdub jtdub commented Mar 26, 2026

Summary

  • Introduces TextStyle = Literal["without_comments", "merged", "with_comments"] type alias in models.py
  • Constrains style parameter on indented_text() and to_text() to TextStyle
  • Exports TextStyle from hier_config.__init__
  • Adds test for all three valid style values

Test plan

  • All tests pass
  • Full lint suite clean (poetry run ./scripts/build.py lint-and-test)

Closes #189

🤖 Generated with Claude Code

@jtdub jtdub requested a review from aedwardstx as a code owner March 26, 2026 03:54
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jtdub jtdub force-pushed the issue-189-literal-style-next branch from 21f6996 to 8ab87a9 Compare March 26, 2026 03:56
@jtdub
Copy link
Contributor Author

jtdub commented Mar 26, 2026

Code review

No issues found. Checked for bugs and CLAUDE.md compliance.

🤖 Generated with Claude Code

- If this code review was useful, please react with 👍. Otherwise, react with 👎.

@jtdub jtdub merged commit aefb3b8 into next Mar 26, 2026
5 checks passed
@jtdub jtdub deleted the issue-189-literal-style-next branch March 26, 2026 04:07
jtdub added a commit that referenced this pull request Mar 26, 2026
#241)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jtdub added a commit that referenced this pull request Mar 26, 2026
* Add CODEOWNERS file

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add Literal type constraint for cisco_style_text() style parameter (#189) (#240)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Drop v2 migration utilities, rename to load_driver_rules/load_tag_rules, and reorganize tests (#221)

Remove v2-to-v3 platform mapping functions and constants. Rename
load_hconfig_v2_options to load_driver_rules and load_hconfig_v2_tags
to load_tag_rules, preserving dict-based driver extension for Nautobot
Golden Config compatibility.

Reorganize test suite into unit/, integration/, and benchmarks/
directories mirroring the source code structure. Split the 2079-line
test_hier_config.py into focused files by module (test_root.py,
test_child.py, test_children.py). Separate driver remediation scenario
tests into integration/ and unit tests into unit/platforms/.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Fix load_tag_rules: use _collect_match_rules and correct return type

Replace inline match-rule collection with existing _collect_match_rules
helper for consistency. Simplify return type from
tuple[TagRule] | tuple[TagRule, ...] to tuple[TagRule, ...].

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* update gha to test against the next branch

* Fix __hash__/__eq__ inconsistency in HConfigChild (#185) (#236)

* Fix __hash__/__eq__ inconsistency in HConfigChild (#185)

__hash__ included new_in_config and order_weight but __eq__ intentionally
excluded them, violating the Python invariant that a == b implies hash(a) == hash(b).
__eq__ also checked tags but __hash__ did not include them.

Align __hash__ to use the same fields as __eq__: text, tags, and children.

Add five tests covering each dimension of the inconsistency and its practical
impact on set deduplication and dict key lookup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Fix pre-existing lint errors in next branch

- test_benchmarks.py: replace append loops with extend (PERF401), add
  @staticmethod to methods that don't use self (PLR6301), suppress
  intentional print calls with noqa: T201
- test_child.py: suppress pylint too-many-lines (C0302)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>

* Move Huawei VRP tests to integration test directory

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Rename inconsistent public APIs (#216)

- tags_add()/tags_remove() → add_tags()/remove_tags()
- cisco_style_text() → indented_text()
- dump_simple() → to_lines()
- config_to_get_to() → remediation()
- depth() method → depth property
- Rename private helpers _config_to_get_to/_left/_right accordingly

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add custom exception hierarchy (#219) (#239)

Add HierConfigError as the base exception with DriverNotFoundError,
InvalidConfigError, IncompatibleDriverError, and reparent
DuplicateChildError under it. Replace generic ValueError/TypeError
raises in constructors and workflows with specific exception types.

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* Add Literal type constraint for indented_text() style parameter (#189) (#241)

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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.

1 participant