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.pyNew 644-line Plating class with async adorn(), plate(), and validate() operations
- Added 644-line
Platingclass providing asyncadorn(),plate(), andvalidate()operations instantiate behavioral1 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_retrydecorators for observability instantiate internal1 file
api.py
- Full type-safe context handling via
PlatingContext,AdornResult,PlateResult,ValidationResultinstantiate internal1 file
api.py
Async template engine
1 file changed
async_template_engine.pyNew 152-line async-first template engine built on Jinja2
- New 152-line async-first template engine built on Jinja2 with
enable_async=Trueinstantiate behavioral1 file
async_template_engine.py
- Supports parallel template rendering via
render_batch()instantiate internal1 file
async_template_engine.py
- Concurrent loading of templates and partials using
asyncio.gather()instantiate internal1 file
async_template_engine.py
- Custom template functions:
schema(),example(),include()instantiate internal1 file
async_template_engine.py
Component sets system
2 files changed
component_sets.pyNew 303-line ComponentSet abstraction for grouping related provider componentsCOMPONENTSETS_EXAMPLE.mdDocumentation for the component sets concept (584 lines)
- Added 303-line
ComponentSetabstraction for grouping related provider components instantiate behavioral1 file
component_sets.py
- Added
COMPONENTSETS_EXAMPLE.md(584 lines) documenting the component sets concept specify internal1 file
COMPONENTSETS_EXAMPLE.md
Enhanced registry
1 file changed
registry.pyExpanded 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
CLI rewrite
1 file changed
cli.pyNew 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.pyNew 226-line decorators module with metrics, timing, and retry decorators
- Added 226-line decorators module with
@with_metrics,@with_timing,@with_retryfor foundation integration instantiate behavioral1 file
decorators.py
plating_metricscontext manager for tracking operation metrics instantiate internal1 file
decorators.py
Package rename completion
20 files changed
__init__.pyRemoved (garnish package deleted)cli.pyRemoved (replaced by plating CLI)generator.pyRemovedplater.pyRemovedtest_runner.pyRemovedtypes.pyRemoved__init__.pyRemovedapi.pyRemovedplating.pyPlatingBundle and PlatingDiscovery classes (renamed from garnish.py)config.pyMigrated from garnisherror_handling.pyMigrated from garnisherrors.pyMigrated from garnishlinting.pyMigrated from garnishmodels.pyMigrated from garnishschema.pyMigrated from garnishtemplate_filters.pyMigrated from garnishtemplate_functions.pyMigrated from garnishtemplates.pyMigrated from garnishtypes.pyUpdated type definitionsmarkdown_validator.pyUpdated markdown validation
- Removed all remaining
src/garnish/modules (cli.py, dresser/, garnish.py, generator.py, plater.py, test_runner.py, types.py, etc.) decouple behavioral8 files
__init__.pycli.pygenerator.pyplater.pytest_runner.pytypes.py__init__.pyapi.py
- Migrated
src/garnish/modules tosrc/plating/: config.py, error_handling.py, errors.py, linting.py, models.py, schema.py, template_filters.py, template_functions.py, templates.py decouple internal9 files
config.pyerror_handling.pyerrors.pylinting.pymodels.pyschema.pytemplate_filters.pytemplate_functions.pytemplates.py
- Renamed
garnish.pytoplating.pywithPlatingBundle/PlatingDiscoveryclasses decouple internal1 file
plating.py
- Renamed
.garnishbundle directories to.plating(adorner.plating, readme.plating) decouple errata4 files
adorner.tmpl.mdbasic.pyfiltered.pyreadme.tmpl.md
- Updated all test files with new naming and imports
qualify
internal
8 files
conftest.pytest_adorner.pytest_cli.pytest_integration.pytest_plater.pytest_plating_bundle.pytest_plating_discovery.pytest_schema.py
Documentation
6 files changed
CHANGELOG.mdVersion historyCONTRIBUTING.mdContribution guidelines (187 lines)README.mdUpdated project identity and architecture overviewAPI.mdNew async API documentation (412 lines)bundle-discovery-pattern.mdBundle discovery design doctemplate-processing-pipeline.mdTemplate processing pipeline design doc
- Added
CHANGELOG.mdwith version history specify errata1 file
CHANGELOG.md
- Added
CONTRIBUTING.md(187 lines) with contribution guidelines specify internal1 file
CONTRIBUTING.md
- Added
docs/API.md(412 lines) documenting the new async API specify behavioral1 file
API.md
- Added
docs/future/directory with bundle discovery and template processing pipeline design docs specify internal2 files
bundle-discovery-pattern.mdtemplate-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.mdRemoved migration artifactIMPLEMENTATION_GUIDE.mdRemoved migration artifactMIGRATION_TEST_RESULTS.mdRemoved migration artifactSTIR_HANGING_FIX.mdRemoved migration artifact20250818-2118-garnish-refactor.txtRemoved old refactor notes (1304 lines)document_self.pyRemoved legacy scriptsetup.shRemoved legacy scriptwrkenv.tomlRemoved workspace filewrknv.tomlRemoved workspace file
- Removed migration artifacts:
E2E_VERIFICATION_COMPLETE.md,IMPLEMENTATION_GUIDE.md,MIGRATION_TEST_RESULTS.md,STIR_HANGING_FIX.mdbaseline internal4 files
E2E_VERIFICATION_COMPLETE.mdIMPLEMENTATION_GUIDE.mdMIGRATION_TEST_RESULTS.mdSTIR_HANGING_FIX.md
- Removed
20250818-2118-garnish-refactor.txt(1304 lines of old refactor notes) baseline internal1 file
20250818-2118-garnish-refactor.txt
- Removed legacy scripts:
document_self.py,setup.shbaseline internal2 files
document_self.pysetup.sh
- Removed workspace files:
wrkenv.toml,wrknv.tomlbaseline internal2 files
wrkenv.tomlwrknv.toml
Testing
4 files changed
test_real_pyvider_components.pyReal integration testing (294 lines)test_component_sets_core.pyComponent sets core tests (376 lines)test_foundation_integration.pyFoundation integration tests (386 lines)test_modern_api.pyModern API tests (367 lines)
- Added
test_real_pyvider_components.py(294 lines) for real integration testing qualify internal1 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 internal3 files
test_component_sets_core.pytest_foundation_integration.pytest_modern_api.py
- Renamed and updated:
test_dresser.pytotest_adorner.py,test_garnish_bundle.pytotest_plating_bundle.py,test_garnish_discovery.pytotest_plating_discovery.pyqualify internal3 files
test_adorner.pytest_plating_bundle.pytest_plating_discovery.py