Metadata-Version: 2.4
Name: tunablex
Version: 0.1.1a0
Summary: Function-first tunables with auto JSON/YAML/TOML config & schema, per-executable composition (tags or trace), and runtime auto-injection.
Project-URL: Homepage, https://github.com/jackpap/tunableX
Project-URL: Issues, https://github.com/jackpap/tunableX/issues
Author: Jacques Papper
License: MIT
License-File: LICENSE
Classifier: Development Status :: 3 - Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: pydantic>=2.4
Provides-Extra: jsonargparse
Requires-Dist: jsonargparse>=4.26; extra == 'jsonargparse'
Provides-Extra: yaml
Requires-Dist: pyyaml>=6.0.1; extra == 'yaml'
Description-Content-Type: text/markdown

# tunableX

Function-first **tunable parameters** for Python apps — with **automatic JSON & JSON Schema**, **per-executable** composition (via tags) or **dynamic** composition (via call-graph **tracing**), and **runtime auto-injection**.

## Key API
- `@tunable(...)` — declare which parameters are user-tunable (per function).
- `schema_for_apps(*apps)` / `defaults_for_apps(*apps)` — by app tags.
- `schema_by_trace(entrypoint)` / `make_app_config_for_entry(entrypoint)` — by tracing (no tags needed).
- `use_config(cfg)` — injects sections into all decorated functions during the run.
- `load_app_config(app, path)` / `load_config_for_entry(entry, path)` — validate JSON against the composed model.

See `examples/` for:
- argparse + app tags
- argparse + tracing (no app)
- jsonargparse + app tags
- jsonargparse + tracing (no app)
