wiring.validate_error_rows_key()

Raise if an asset already materializes the error-rows key.

Usage

Source

wiring.validate_error_rows_key(
    context,
    error_rows_key,
)

Call it at the start of a hand-wired asset’s function when the asset writes error rows, as dd.asset does. In a direct invocation it does nothing.

Parameters

context: dg.AssetExecutionContext

The running asset’s context, whose code location the check reads.

error_rows_key: dg.AssetKey
The key the asset’s writer receives, such as the one get_error_rows_key returns.

Raises

ErrorRowsKeyCollisionError
An asset in the code location materializes the error-rows key. The asset itself counts, so the function raises for an error_rows_key equal to the asset’s own key.

Examples

from collections.abc import Iterator

import dagster as dg
import polars as pl

import dagster_dataframely as dd
from dagster_dataframely.data import OrdersSchema, storefront_orders


@dg.asset(
    check_specs=dd.wiring.build_asset_check_specs(
        OrdersSchema, asset="orders", filter=True
    ),
)
def orders(
    context: dg.AssetExecutionContext,
) -> Iterator[dg.MaterializeResult[pl.DataFrame] | dg.AssetCheckResult]:
    error_rows_key = dd.wiring.get_error_rows_key(context.asset_key)
    dd.wiring.validate_error_rows_key(context, error_rows_key)
    yield from dd.wiring.stream_results(
        OrdersSchema,
        storefront_orders,
        context=context,
        error_rows_writer=dd.wiring.build_io_manager_writer(
            context, error_rows_key
        ),
    )


dg.materialize([orders]).success
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - RUN_START - Started execution of run for "__ephemeral_asset_job__".
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - ENGINE_EVENT - Executing steps in process (pid: 3760)
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - RESOURCE_INIT_STARTED - Starting initialization of resources [io_manager].
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - RESOURCE_INIT_SUCCESS - Finished initialization of resources [io_manager].
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - LOGS_CAPTURED - Capturing logs for process (pid: 3760).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_START - Started execution of step "orders".
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - orders - Writing file at: /tmp/tmp_3j3s9be/storage/orders__error_rows using PickledObjectFilesystemIOManager...
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_MATERIALIZATION - Materialized value orders__error_rows.
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "result" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - orders - Writing file at: /tmp/tmp_3j3s9be/storage/orders using PickledObjectFilesystemIOManager...
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_MATERIALIZATION - Materialized value orders.
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - HANDLED_OUTPUT - Handled output "result" using IO manager "io_manager"
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_schema__columns" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_schema__columns' on 'orders' passed. Description: 'Every column matches.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__paid_orders_have_amount" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__paid_orders_have_amount' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__line_numbers_are_dense" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__line_numbers_are_dense' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__primary_key" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__primary_key' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__order_id__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__order_id__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__order_id__regex" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__order_id__regex' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__line_no__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__line_no__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__line_no__min" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__line_no__min' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__email__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__email__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__email__check__lowercase" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__email__check__lowercase' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__email__max_length" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__email__max_length' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__amount__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__amount__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__amount__min" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__amount__min' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__quantity__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__quantity__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__quantity__min" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__quantity__min' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__quantity__max" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__quantity__max' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__priority__is_in" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__priority__is_in' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__status__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__status__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__tracking_id__unique" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__tracking_id__unique' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__is_gift__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__is_gift__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__ordered_at__nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__ordered_at__nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__tags__max_length" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__tags__max_length' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__tags__inner_nullability" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__tags__inner_nullability' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_OUTPUT - Yielded output "orders_dy_rule__note__check" of type "Any". (Type check passed).
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - ASSET_CHECK_EVALUATION - Asset check 'dy_rule__note__check' on 'orders' passed. Description: 'No row failed.'
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - orders - STEP_SUCCESS - Finished execution of step "orders" in 154ms.
/home/runner/work/dagster-dataframely/dagster-dataframely/.venv/lib/python3.12/site-packages/dagster/_core/execution/context_creation_job.py:273: RuntimeWarning: coroutine 'BaseEventLoop.shutdown_asyncgens' was never awaited
  pass
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - ENGINE_EVENT - Finished steps in process (pid: 3760) in 165ms
2026-10-22 02:11:14 +0000 - dagster - DEBUG - __ephemeral_asset_job__ - 15186c92-895d-47ef-a1e6-c19dd887ba6d - 3760 - RUN_SUCCESS - Finished execution of run for "__ephemeral_asset_job__".
True