Automagically generate yaml schemas for your Hydra config files
Project description
hydra-auto-schema
This tool greatly improves the experience of developing a project with Hydra by enabling rich IDE support for Hydra config files.
📢 If you are thinking of using Hydra for a PyTorch or Jax-based ML project, you might want to take a look at the Research Project Template where this plugin was originally created. This is also where this plugin is best integrated!
With this, you'll now get to see:
- the list of available configuration options in a given config
- the default values for each entry
- the documentation associated with each entry (taken from the source code of the
_target_
callable!) Additionally - A warning is displayed when a value is unexpected, or of the wrong type.
All-in-all, this helps to prevent errors, and gives your codebase the same kind of neatness and safety that type hints do.
Demo
https://github.com/user-attachments/assets/08f52d47-ebba-456d-95ef-ac9525d8e983
Installation
Requirements
At the moment, we assume that you are using VSCode as your code editor. We use the yaml extension by RedHat, and install it for you if it isn't already. However any IDE with a YAML language server should be fairly easy to make work. Please make an issue if this doesn't work with your IDE.
uv (recommended)
uv add hydra-auto-schema
Note: This plugin needs to be installed in your project's virtual environment. It should not be installed as an isolated tool using
uv tool
. This is because the plugin needs to import the modules where the_target_
s are defined in order to inspect their signature.
pip
pip install hydra-auto-schema
Usage (CLI)
Generate the yaml schemas for all the configs in the current folder:
hydra-auto-schema
Watch for changes in the configs
folder and update the schemas as needed:
hydra-auto-schema configs --watch
Usage (Hydra)
This package includes a Hydra plugin. By default, it will try to update all the schema files in your project's config directory when Hydra's main function is called.
You don't really need to call anything for this to happen! Just keep using Hydra like you used to, and hopefully your config files will just feel much better to use! 😁
To configure how the auto schema plugin is called by Hydra, you can add the following block somwehere before your main Hydra function:
from hydra_plugins.auto_schema import auto_schema_plugin
auto_schema_plugin.config = auto_schema_plugin.AutoSchemaPluginConfig(
schemas_dir=... # Path where you want the schema files to be saved. Defaults to ".schemas",
regen_schemas=False, # Whether to regenerate schemas even if the config did not change.
stop_on_error=False,
quiet=True,
add_headers=False, # controls whether to add headers, use vscode settings, or either.
)
How to Contribute
This is a very new tool, and we'd love to get your feedback! Please feel free to make an Issue if you have any questions or feedback. We'll be happy to assist you.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file hydra_auto_schema-0.0.6.tar.gz
.
File metadata
- Download URL: hydra_auto_schema-0.0.6.tar.gz
- Upload date:
- Size: 63.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 98d808ced7ba1e12852ed38f2853a60195eb1fc9df7f0bf1ab3f9598c29d185e |
|
MD5 | f5bfc4ad53c0d19f39da0b6e5151bd4d |
|
BLAKE2b-256 | 73f8b7a60094af82f86c18b5f1ba1cc537473de05540881041556d891faab4d3 |
Provenance
The following attestation bundles were made for hydra_auto_schema-0.0.6.tar.gz
:
Publisher:
publish.yaml
on lebrice/hydra-auto-schema
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
hydra_auto_schema-0.0.6.tar.gz
- Subject digest:
98d808ced7ba1e12852ed38f2853a60195eb1fc9df7f0bf1ab3f9598c29d185e
- Sigstore transparency entry: 147310554
- Sigstore integration time:
- Predicate type:
File details
Details for the file hydra_auto_schema-0.0.6-py3-none-any.whl
.
File metadata
- Download URL: hydra_auto_schema-0.0.6-py3-none-any.whl
- Upload date:
- Size: 27.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7a15dd6306786112f155a465e2d25aa04bc08d257ed09c9c7ca69d179dd0215 |
|
MD5 | a7f1ef207954db5ad994c4f15546d42f |
|
BLAKE2b-256 | b246596c8d8d2b5f8829da73cdb13630f2f03eba666e393d3a691fc4f0c596ac |
Provenance
The following attestation bundles were made for hydra_auto_schema-0.0.6-py3-none-any.whl
:
Publisher:
publish.yaml
on lebrice/hydra-auto-schema
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
hydra_auto_schema-0.0.6-py3-none-any.whl
- Subject digest:
b7a15dd6306786112f155a465e2d25aa04bc08d257ed09c9c7ca69d179dd0215
- Sigstore transparency entry: 147310557
- Sigstore integration time:
- Predicate type: