## errors.PreconditionError


Input data violates a precondition.


Usage

``` python
errors.PreconditionError(
    message,
    *,
    source=None,
    condition=None,
    rows=None,
)
```


Import it from `sverify.errors`. Raised when a contracted transformation is called on inputs bound to a backend, or a node is refreshed (on the full source tables the first time, then on each batch of changes), and a precondition does not hold on the rows. The message says how many rows violate which condition, for example "2 row(s) of orders violate (\_.amount \>= 0)".


## Attributes


`source`  
The input or source table the condition is on (None when the error is about several, an assumed `SUM` among them).

`condition`  
The condition as stated in `requires` (an Ibis deferred, a SQL string, a [unique](unique.md#sverify.unique) key, …) or as inferred, an `Inferred` whose text is its SQL; None as for [source](io.Sink.md#sverify.io.Sink.source).

`rows`  
Up to `ROWS_SHOWN` (10) of the rows that break it, as an Arrow table with the input's columns; None where the condition is on the table as a whole (`max_rows`, `rows_per`) or the rows could not be fetched.
