EnvWizard v0 → v1 Migration¶
This guide covers migrating from v0 behavior to v1.
Who should migrate?¶
Migrate if you want:
explicit environment precedence
nested dataclass support in env loading
clearer aliasing rules
If your v0 config is flat and stable, there is no urgency.
Step 1: Opt into v1¶
class Config(EnvWizard):
class _(EnvWizard.Meta):
v1 = True
token: str
Step 2: Turn on v1 debug (temporary)¶
class _(EnvWizard.Meta):
v1_debug = True
Step 3: Verify precedence assumptions¶
v1 uses explicit precedence. Default:
Secrets → Environment → Dotenv
If your v0 behavior relied on dotenv overriding env vars, set precedence explicitly in v1.
from dataclass_wizard import EnvPrecedence
class _(EnvWizard.Meta):
v1_env_precedence = EnvPrecedence.DOTENV_ENV_SECRETS
Step 4: Migrate aliases¶
v0 aliasing:
field_to_env_var
v1 aliasing:
load-only:
v1_field_to_env_loaddump-only:
v1_field_to_alias_dump
Example:
class _(EnvWizard.Meta):
v1_field_to_env_load = {"db_url": ["DATABASE_URL", "DB_URL"]}
v1_field_to_alias_dump = {"db_url": "databaseUrl"}
Step 5: Nested dataclasses¶
If you previously flattened configs due to v0 limitations, you can now model them directly.
class DB(EnvWizard):
host: str
port: int
class Config(EnvWizard):
db: DB
Step 6: Remove debug¶
Once stable, disable debug to avoid log noise.
class _(EnvWizard.Meta):
v1_debug = False