Contracts & Products¶
dbt_contracts.models.odps
¶
Pydantic models for the Open Data Product Standard (ODPS) v1.0.0.
InputPort
¶
Bases: BaseModel
An input port describing a data ingestion source.
Source code in src/dbt_contracts/models/odps.py
ManagementPort
¶
Bases: BaseModel
A management port for operational interfaces.
Source code in src/dbt_contracts/models/odps.py
OpenDataProductStandard
¶
Bases: BaseModel
Root model for an ODPS v1.0.0 data product definition.
Loaded from .odps.yaml files.
Source code in src/dbt_contracts/models/odps.py
OutputPort
¶
Bases: BaseModel
An output port describing exposed data.
Source code in src/dbt_contracts/models/odps.py
dbt_contracts.core
¶
Core logic for contract processing, validation, and dbt generation.
DiffResult
¶
Bases: BaseModel
Result of comparing generated vs on-disk files.
Source code in src/dbt_contracts/core/differ.py
DiscoveredContract
¶
Bases: BaseModel
An ODCS contract discovered from the filesystem.
Source code in src/dbt_contracts/core/discovery.py
DiscoveredProduct
¶
Bases: BaseModel
An ODPS product discovered from the filesystem.
Source code in src/dbt_contracts/core/discovery.py
DiscoveryError
¶
DiscoveryResult
¶
Bases: BaseModel
Result of scanning a contracts directory.
Source code in src/dbt_contracts/core/discovery.py
FileDiff
¶
FileStatus
¶
GenerateResult
¶
Bases: BaseModel
Result of running the generator.
Source code in src/dbt_contracts/core/generator.py
GeneratedFile
¶
GenerationResult
¶
Bases: BaseModel
Combined dbt artifacts produced by rendering contracts.
Source code in src/dbt_contracts/core/adapter.py
ImportResult
¶
ImportedContract
¶
InitResult
¶
LintResult
¶
Bases: BaseModel
Result of validating an ODCS contract against the JSON schema.
Source code in src/dbt_contracts/core/adapter.py
ValidationIssue
¶
ValidationResult
¶
Bases: BaseModel
Result of validating all discovered contracts and products.
Source code in src/dbt_contracts/core/validation.py
diff(discovery, output_base, models_dir=None, sources_dir=None)
¶
Compare expected generated output with current on-disk state.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
discovery
|
DiscoveryResult
|
Result from discover(). |
required |
output_base
|
Path
|
Base path for output (the dbt project root). |
required |
models_dir
|
str | None
|
Override for models output directory. |
None
|
sources_dir
|
str | None
|
Override for sources output directory. |
None
|
Returns:
| Type | Description |
|---|---|
DiffResult
|
DiffResult with per-file comparison. |
Source code in src/dbt_contracts/core/differ.py
discover(contracts_dir)
¶
Scan a contracts directory and load all contracts, products, and config.
Expects the following structure::
contracts_dir/
├── config.yaml
├── contracts/*.odcs.yaml
└── products/*.odps.yaml
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
contracts_dir
|
str | Path
|
Path to the contracts directory. |
required |
Returns:
| Type | Description |
|---|---|
DiscoveryResult
|
DiscoveryResult with parsed config, contracts, and products. |
Raises:
| Type | Description |
|---|---|
DiscoveryError
|
If the directory does not exist or a file fails to parse. |
Source code in src/dbt_contracts/core/discovery.py
generate(discovery, output_base, models_dir=None, sources_dir=None, force=False, dry_run=False)
¶
Generate dbt artifacts from discovered contracts and products.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
discovery
|
DiscoveryResult
|
Result from discover(). |
required |
output_base
|
Path
|
Base path for output (typically the dbt project root). |
required |
models_dir
|
str | None
|
Override for models output directory. |
None
|
sources_dir
|
str | None
|
Override for sources output directory. |
None
|
force
|
bool
|
Overwrite non-managed files. |
False
|
dry_run
|
bool
|
Preview without writing files. |
False
|
Returns:
| Type | Description |
|---|---|
GenerateResult
|
GenerateResult with all generated (or previewed) files. |
Source code in src/dbt_contracts/core/generator.py
import_dbt(schema_paths, output_dir, server_type='snowflake', dry_run=False)
¶
Parse dbt schema YAML files and generate ODCS contract stubs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
schema_paths
|
list[Path]
|
Paths to dbt schema.yml files. |
required |
output_dir
|
Path
|
Directory to write generated contract files. |
required |
server_type
|
str
|
Default server type for contracts. |
'snowflake'
|
dry_run
|
bool
|
Preview without writing files. |
False
|
Returns:
| Type | Description |
|---|---|
ImportResult
|
ImportResult with generated contract stubs. |
Source code in src/dbt_contracts/core/importer.py
lint(contract)
¶
Validate an ODCS contract against the JSON schema.
Delegates to datacontract-cli's lint functionality. Serializes the contract to YAML first, as datacontract-cli only runs full JSON schema validation when receiving a YAML string (not an object).
Source code in src/dbt_contracts/core/adapter.py
render(contracts, products, default_server_type='snowflake')
¶
Render ODCS contracts into dbt artifacts using ODPS lineage.
Classifies each contract as source, model, or ref based on ODPS port definitions, then calls the appropriate datacontract-cli exporter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
contracts
|
list[OpenDataContractStandard]
|
ODCS contract objects to render. |
required |
products
|
list[OpenDataProductStandard]
|
ODPS product objects defining lineage between contracts. |
required |
default_server_type
|
str
|
Fallback server type when a contract has no servers. |
'snowflake'
|
Returns:
| Type | Description |
|---|---|
GenerationResult
|
GenerationResult with sources, models, and staging SQL dicts. |
Source code in src/dbt_contracts/core/adapter.py
to_yaml(data)
¶
validate(discovery)
¶
Validate all discovered contracts and products.
Runs: 1. ODCS schema validation (via datacontract-cli lint) 2. Cross-reference validation (ODPS contractId -> ODCS) 3. Status threshold checks (against config.validation.min_status)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
discovery
|
DiscoveryResult
|
Result from discover(). |
required |
Returns:
| Type | Description |
|---|---|
ValidationResult
|
ValidationResult with any issues found. |