plating 2025-09-11
Second garnish-to-plating migration wave with async API and component sets
87 files · 8,050+ · 8,158-

Modern async API

1 file changed
  • api.py New 644-line Plating class with async adorn(), plate(), and validate() operations
  • Added 644-line Plating class providing async adorn(), plate(), and validate() operations instantiate behavioral
    1 file
    • api.py
  • Integrated foundation resilience patterns: RetryPolicy with exponential backoff, CircuitBreaker for fault tolerance harden internal
    1 file
    • api.py
  • Added @with_metrics, @with_timing, @with_retry decorators for observability instantiate internal
    1 file
    • api.py
  • Full type-safe context handling via PlatingContext, AdornResult, PlateResult, ValidationResult instantiate internal
    1 file
    • api.py

Async template engine

1 file changed
  • async_template_engine.py New 152-line async-first template engine built on Jinja2
  • New 152-line async-first template engine built on Jinja2 with enable_async=True instantiate behavioral
    1 file
    • async_template_engine.py
  • Supports parallel template rendering via render_batch() instantiate internal
    1 file
    • async_template_engine.py
  • Concurrent loading of templates and partials using asyncio.gather() instantiate internal
    1 file
    • async_template_engine.py
  • Custom template functions: schema(), example(), include() instantiate internal
    1 file
    • async_template_engine.py

Component sets system

2 files changed
  • component_sets.py New 303-line ComponentSet abstraction for grouping related provider components
  • COMPONENTSETS_EXAMPLE.md Documentation for the component sets concept (584 lines)
  • Added 303-line ComponentSet abstraction for grouping related provider components instantiate behavioral
    1 file
    • component_sets.py
  • Added COMPONENTSETS_EXAMPLE.md (584 lines) documenting the component sets concept specify internal
    1 file
    • COMPONENTSETS_EXAMPLE.md

Enhanced registry

1 file changed
  • registry.py Expanded to 431 lines with component discovery, filtering, and metrics integration
  • Expanded registry to 431 lines with component discovery, filtering by type, and template existence checking decouple behavioral
    1 file
    • registry.py
  • Foundation metrics integration for tracking registry operations decouple internal
    1 file
    • registry.py
1 file changed
  • cli.py New 705-line CLI module with full Click-based command structure
  • New 705-line CLI module for the plating package with full Click-based command structure instantiate behavioral
    1 file
    • cli.py
  • Commands: adorn, plate, validate, info, stats instantiate internal
    1 file
    • cli.py

Decorators module

1 file changed
  • decorators.py New 226-line decorators module with metrics, timing, and retry decorators
  • Added 226-line decorators module with @with_metrics, @with_timing, @with_retry for foundation integration instantiate behavioral
    1 file
    • decorators.py
  • plating_metrics context manager for tracking operation metrics instantiate internal
    1 file
    • decorators.py

Package rename completion

20 files changed
  • __init__.py Removed (garnish package deleted)
  • cli.py Removed (replaced by plating CLI)
  • generator.py Removed
  • plater.py Removed
  • test_runner.py Removed
  • types.py Removed
  • __init__.py Removed
  • api.py Removed
  • plating.py PlatingBundle and PlatingDiscovery classes (renamed from garnish.py)
  • config.py Migrated from garnish
  • error_handling.py Migrated from garnish
  • errors.py Migrated from garnish
  • linting.py Migrated from garnish
  • models.py Migrated from garnish
  • schema.py Migrated from garnish
  • template_filters.py Migrated from garnish
  • template_functions.py Migrated from garnish
  • templates.py Migrated from garnish
  • types.py Updated type definitions
  • markdown_validator.py Updated markdown validation
  • Removed all remaining src/garnish/ modules (cli.py, dresser/, garnish.py, generator.py, plater.py, test_runner.py, types.py, etc.) decouple behavioral
    8 files
    • __init__.py
    • cli.py
    • generator.py
    • plater.py
    • test_runner.py
    • types.py
    • __init__.py
    • api.py
  • Migrated src/garnish/ modules to src/plating/: config.py, error_handling.py, errors.py, linting.py, models.py, schema.py, template_filters.py, template_functions.py, templates.py decouple internal
    9 files
    • config.py
    • error_handling.py
    • errors.py
    • linting.py
    • models.py
    • schema.py
    • template_filters.py
    • template_functions.py
    • templates.py
  • Renamed garnish.py to plating.py with PlatingBundle/PlatingDiscovery classes decouple internal
    1 file
    • plating.py
  • Renamed .garnish bundle directories to .plating (adorner.plating, readme.plating) decouple errata
    4 files
    • adorner.tmpl.md
    • basic.py
    • filtered.py
    • readme.tmpl.md
  • Updated all test files with new naming and imports qualify internal
    8 files
    • conftest.py
    • test_adorner.py
    • test_cli.py
    • test_integration.py
    • test_plater.py
    • test_plating_bundle.py
    • test_plating_discovery.py
    • test_schema.py

Documentation

6 files changed
  • CHANGELOG.md Version history
  • CONTRIBUTING.md Contribution guidelines (187 lines)
  • README.md Updated project identity and architecture overview
  • API.md New async API documentation (412 lines)
  • bundle-discovery-pattern.md Bundle discovery design doc
  • template-processing-pipeline.md Template processing pipeline design doc
  • Added CHANGELOG.md with version history specify errata
    1 file
    • CHANGELOG.md
  • Added CONTRIBUTING.md (187 lines) with contribution guidelines specify internal
    1 file
    • CONTRIBUTING.md
  • Added docs/API.md (412 lines) documenting the new async API specify behavioral
    1 file
    • API.md
  • Added docs/future/ directory with bundle discovery and template processing pipeline design docs specify internal
    2 files
    • bundle-discovery-pattern.md
    • template-processing-pipeline.md
  • Updated README with new project identity and architecture overview specify behavioral
    1 file
    • README.md

Cleanup of migration artifacts

9 files changed
  • E2E_VERIFICATION_COMPLETE.md Removed migration artifact
  • IMPLEMENTATION_GUIDE.md Removed migration artifact
  • MIGRATION_TEST_RESULTS.md Removed migration artifact
  • STIR_HANGING_FIX.md Removed migration artifact
  • 20250818-2118-garnish-refactor.txt Removed old refactor notes (1304 lines)
  • document_self.py Removed legacy script
  • setup.sh Removed legacy script
  • wrkenv.toml Removed workspace file
  • wrknv.toml Removed workspace file
  • Removed migration artifacts: E2E_VERIFICATION_COMPLETE.md, IMPLEMENTATION_GUIDE.md, MIGRATION_TEST_RESULTS.md, STIR_HANGING_FIX.md baseline internal
    4 files
    • E2E_VERIFICATION_COMPLETE.md
    • IMPLEMENTATION_GUIDE.md
    • MIGRATION_TEST_RESULTS.md
    • STIR_HANGING_FIX.md
  • Removed 20250818-2118-garnish-refactor.txt (1304 lines of old refactor notes) baseline internal
    1 file
    • 20250818-2118-garnish-refactor.txt
  • Removed legacy scripts: document_self.py, setup.sh baseline internal
    2 files
    • document_self.py
    • setup.sh
  • Removed workspace files: wrkenv.toml, wrknv.toml baseline internal
    2 files
    • wrkenv.toml
    • wrknv.toml
4 files changed
  • test_real_pyvider_components.py Real integration testing (294 lines)
  • test_component_sets_core.py Component sets core tests (376 lines)
  • test_foundation_integration.py Foundation integration tests (386 lines)
  • test_modern_api.py Modern API tests (367 lines)
  • Added test_real_pyvider_components.py (294 lines) for real integration testing qualify internal
    1 file
    • test_real_pyvider_components.py
  • Added test_component_sets_core.py (376 lines), test_foundation_integration.py (386 lines), test_modern_api.py (367 lines) qualify internal
    3 files
    • test_component_sets_core.py
    • test_foundation_integration.py
    • test_modern_api.py
  • Renamed and updated: test_dresser.py to test_adorner.py, test_garnish_bundle.py to test_plating_bundle.py, test_garnish_discovery.py to test_plating_discovery.py qualify internal
    3 files
    • test_adorner.py
    • test_plating_bundle.py
    • test_plating_discovery.py