httk.store

Provide httk-store’s data-management capability layer for httk v2.

Built on the stdlib-only contracts and models in httk-core, httk-store supplies capabilities:

The providers self-register (under httk.registry.entries.store, as store-references/store-files/store-calculations/store-db-store) when httk.core discovers the module, so a serving module (such as httk-serve) can find them through the registry.

class httk.store.StandardEntryProvider

Submodules

Attributes

FilterTranslationCategory

Why a filter could not be translated (see FilterTranslationError).

Exceptions

FederatedSourceError

Report that a named source rejected or failed a federated operation.

FederatedStoreError

Report that a federation-level store operation failed.

CountUnavailableError

Report that a store cannot provide an exact query count.

MultipleResultsError

Report that a result-set one() operation found multiple results.

NoResultError

Report that a result-set one() operation found no matching result.

PaginationCursorError

Report that a continuation cursor is malformed, expired, or belongs to another result plan.

UnsupportedQueryError

Report that a valid query operation is outside a store's supported profile.

FilterTranslationError

Report that a filter cannot be translated into a search expression.

PropertyValidationError

Report that a value did not conform to its OPTIMADE property definition.

Classes

CalculationEntryProvider

Serves OPTIMADE calculations from a mapping of id to Calculation.

DataRecordEntryProvider

Serve core DataRecord values as provider properties.

FileEntryProvider

Serves OPTIMADE files from a mapping of id to File.

ReferenceEntryProvider

Serves OPTIMADE references from a mapping of id to Reference.

RunEntryProvider

Serve core Run records and their provenance edges.

FederatedResultSet

Represent a frozen, lazy, re-iterable federated result plan.

FederatedSearcher

Build and validate one portable, single-root federated query.

FederatedStore

Fan out read-only queries over an ordered collection of borrowed stores.

FederatedTarget

Bind one logical target to exact concrete targets for named sources.

ContinuationToken

Carry an opaque URL-safe continuation value.

PageableResultSetLike

Expose optional continuation-page capability on a frozen result set.

PageOrder

Order a continuation page by one named scalar result projection.

PortableQueryCapabilities

Describe the query operations guaranteed by one property definition.

ResultPage

Represent an immutable continuation-page result.

ResultRow

Represent one named result row by position, name, or attribute.

ResultRowLike

Require named access to one result row.

ResultSetLike

Require the common operations of a materialized result set.

Searcher

Build one query and iterate its results.

SearchExpression

Require composable backend search expressions.

SearchField

Expose a queryable field of a search variable.

SearchResult

Represent one match with declared output values and names.

SearchVariable

Bind a query variable to a target type whose attributes yield fields.

Store

Require a store that can create a query searcher.

Functions

product_relationships(links)

Build source-side relationships for a provider's relationships= argument.

portable_query_capabilities(definition)

Derive the portable operation subset for definition.

portable_query_fields(entry_type, *[, include, exclude])

Return the ordered portable query fields described by entry_type.

filter_searcher(store, target, filter_string, *, ...)

Build a Searcher over store applying an OPTIMADE filter.

validate_property(definition, value)

Validate a single value against definition's JSON-Schema payload.

validate_record(entry_type, record)

Validate every property present in record against entry_type.

Package Contents

class httk.store.CalculationEntryProvider(entries, *, relationships=None)[source]

Bases: StandardEntryProvider

Serves OPTIMADE calculations from a mapping of id to Calculation.

relationships optionally maps a calculation id to its related entries (RelatedEntry values, served flat per id) — e.g. its input/output files, expressed via the role metadata.

Parameters:
class httk.store.DataRecordEntryProvider(entries, *, definitions=None, relationships=None)[source]

Bases: httk.core.EntryProvider

Serve core DataRecord values as provider properties.

Definitions are resolved eagerly at construction. Every served property name must start with _; absent record properties are emitted as JSON null.

Parameters:
Raises:

ValueError – If a property name, definition, or non-nullable property is inconsistent with the supplied records.

entry_types()[source]

Return the resolved _httk_records entry definition.

Returns:

The served data-record entry-type definition.

Return type:

collections.abc.Mapping[str, httk.core.EntryTypeDefinition]

property_keys(entry_type)[source]

Return served property names mapped to data-record keys.

Parameters:

entry_type (str) – The entry type to inspect.

Returns:

The served-property to record-key mapping.

Raises:

KeyError – If entry_type is not _httk_records.

Return type:

collections.abc.Mapping[str, str]

records(entry_type)[source]

Return records with union-null values for unserved properties.

Parameters:

entry_type (str) – The entry type to enumerate.

Yield:

JSON-compatible records in input mapping order.

Raises:

KeyError – If entry_type is not _httk_records.

relationships(entry_type)[source]

Return normalized data-record relationships by identifier.

Parameters:

entry_type (str) – The entry type to inspect.

Returns:

The relationship mapping supplied at construction.

Raises:

KeyError – If entry_type is not _httk_records.

Return type:

collections.abc.Mapping[str, tuple[httk.core.RelatedEntry, Ellipsis]]

class httk.store.FileEntryProvider(entries, *, relationships=None)[source]

Bases: StandardEntryProvider

Serves OPTIMADE files from a mapping of id to File.

relationships optionally maps a file id to its related entries (RelatedEntry values, served flat per id) — e.g. the calculations a file is input/output of.

Parameters:
class httk.store.ReferenceEntryProvider(entries, *, relationships=None)[source]

Bases: StandardEntryProvider

Serves OPTIMADE references from a mapping of id to Reference.

relationships optionally maps a reference id to its related entries (RelatedEntry values, served flat per id).

Parameters:
class httk.store.RunEntryProvider(entries)[source]

Bases: httk.core.EntryProvider

Serve core Run records and their provenance edges.

Parameters:

entries (collections.abc.Mapping[str, httk.core.Run | collections.abc.Mapping[str, Any]]) – The runs keyed by their served identifiers.

entry_types()[source]

Return the vendored _httk_runs entry definition.

Returns:

The served run entry-type definition.

Return type:

collections.abc.Mapping[str, httk.core.EntryTypeDefinition]

property_keys(entry_type)[source]

Return the served run-property to record-key mapping.

Parameters:

entry_type (str) – The entry type to inspect.

Returns:

The served-property to record-key mapping.

Raises:

KeyError – If entry_type is not _httk_runs.

Return type:

collections.abc.Mapping[str, str]

records(entry_type)[source]

Return JSON-compatible run records.

Parameters:

entry_type (str) – The entry type to enumerate.

Yield:

Run records in input mapping order.

Raises:

KeyError – If entry_type is not _httk_runs.

relationships(entry_type)[source]

Return run provenance edges with role and edge-label metadata.

Parameters:

entry_type (str) – The entry type to inspect.

Returns:

Relationships grouped by run identifier.

Raises:

KeyError – If entry_type is not _httk_runs.

Return type:

collections.abc.Mapping[str, tuple[httk.core.RelatedEntry, Ellipsis]]

httk.store.product_relationships(links)[source]

Build source-side relationships for a provider’s relationships= argument.

Feed the inner mapping into the source-side provider’s relationships= argument; per-edge workflow_declaration_uri is deliberately not served yet (relation-object serving is future work).

Parameters:

links (collections.abc.Iterable[httk.core.ProductLink]) – The product links to group by source type and identifier.

Returns:

Source-type mappings of source identifiers to related product entries.

Raises:

ValueError – If one source has duplicate product labels.

Return type:

dict[str, dict[str, tuple[httk.core.RelatedEntry, Ellipsis]]]

class httk.store.FederatedResultSet(store, plan)[source]

Represent a frozen, lazy, re-iterable federated result plan.

Results execute source-major in federation source order, preserve duplicate rows, and remain read-only views over the borrowed stores.

Parameters:
  • store (FederatedStore) – The federation whose sources execute the plan.

  • plan (object) – The validated frozen federation plan.

property names: tuple[str, Ellipsis]

Return the declared projection names.

Returns:

The result projection names in declaration order.

Return type:

tuple[str, Ellipsis]

first()[source]

Return the first result row, or None when no row matches.

Returns:

The first matching row, or None.

Return type:

httk.store.query.ResultRow | None

one()[source]

Return the only result row.

Returns:

The sole matching result row.

Raises:
Return type:

httk.store.query.ResultRow

scalars(name=None)[source]

Iterate over one named projection.

Parameters:

name (str | None) – The projection name, required when more than one output exists.

Returns:

An iterator over the selected projection values.

Raises:
  • ValueError – If no name is supplied for multiple outputs.

  • KeyError – If name is not a declared output.

Return type:

collections.abc.Iterator[object]

column(name)[source]

Return a lazy scalar column by projection name.

Parameters:

name (str) – The scalar projection name.

Returns:

A lazy column view over the projection.

Raises:
  • KeyError – If name is not a declared output.

  • TypeError – If name identifies an object output.

Return type:

FederatedResultColumn

abstractmethod cursor()[source]

Reject cursor access because federation cursors are unsupported.

Returns:

Never returns.

Raises:

NotImplementedError – Always, because federated cursors are not implemented.

Return type:

collections.abc.Iterator[httk.store.query.ResultRow]

class httk.store.FederatedSearcher(store)[source]

Build and validate one portable, single-root federated query.

Parameters:

store (FederatedStore) – The federation whose child stores provide the query surface.

offset = 0
origin
variable(target)[source]

Bind one shared or explicit target against child searcher prototypes.

Parameters:

target (object) – A shared child target or a source-specific target binding.

Returns:

The federated root variable.

Raises:
Return type:

FederatedVariable

add(expression)[source]

Validate and retain a portable condition for the future frozen plan.

Parameters:

expression (object) – An expression produced by this searcher.

Returns:

None.

Raises:
Return type:

None

output(value, name)[source]

Declare a record, scalar field, or origin output for a future plan.

Parameters:
  • value (object) – The root variable, field, or origin sentinel to project.

  • name (str) – The nonempty output name.

Returns:

None.

Raises:
Return type:

None

add_sort(field, descending=False)[source]

Reject global sorting until a portable sort-semantics contract exists.

Parameters:
  • field (object) – The requested sort field.

  • descending (bool) – Whether the requested order is descending.

Raises:

httk.store.query.protocols.UnsupportedQueryError – Always, because global federation sorting has no portable contract.

count()[source]

Return the exact unpaged count of the current filtered union.

Returns:

The exact sum of matching rows across participating sources.

Raises:
Return type:

int

set_limit(limit)[source]

Set the global output limit; a negative value clears it.

Parameters:

limit (int) – The nonnegative limit, or a negative value to clear it.

Returns:

None.

Raises:

TypeError – If limit is not an integer.

Return type:

None

add_offset(offset)[source]

Add a global source-union offset.

Parameters:

offset (int) – The nonnegative number of union rows to skip.

Returns:

None.

Raises:
Return type:

None

results(**outputs)[source]

Freeze a projection plan into a lazy, re-iterable result set.

Parameters:

**outputs (object) – Optional output names mapped to root variables or fields.

Returns:

The lazy frozen result set.

Raises:
Return type:

FederatedResultSet

exception httk.store.FederatedSourceError(source, operation)[source]

Bases: FederatedStoreError

Report that a named source rejected or failed a federated operation.

Parameters:
  • source (str) – The source name that failed.

  • operation (str) – The federation operation being performed.

source
operation
class httk.store.FederatedStore(sources)[source]

Fan out read-only queries over an ordered collection of borrowed stores.

The union is source-major, lazy, and non-deduplicating. Queries require the strict common query surface accepted by every participating source, and counts are exact sums of the unpaged source counts. This live borrowed-store view is distinct from the persisted registry in httk.store.db.stored_federation.

Parameters:

sources (collections.abc.Mapping[str, httk.store.query.Store]) – Child stores keyed by stable federation source name.

Raises:
  • TypeError – If sources is not a mapping.

  • ValueError – If fewer than two sources or an invalid source name is supplied.

property source_names: tuple[str, Ellipsis]

Return the immutable source names in constructor iteration order.

Returns:

The source names in constructor order.

Return type:

tuple[str, Ellipsis]

target(name, targets)[source]

Create an immutable target mapping for an intentional source subset.

Parameters:
Returns:

The validated target binding.

Raises:
  • TypeError – If targets is not a mapping.

  • ValueError – If a target name or source name is invalid.

Return type:

FederatedTarget

searcher()[source]

Create an unbound federated searcher without touching child stores.

Returns:

A new mutable query builder.

Return type:

FederatedSearcher

exception httk.store.FederatedStoreError[source]

Bases: RuntimeError

Report that a federation-level store operation failed.

class httk.store.FederatedTarget[source]

Bind one logical target to exact concrete targets for named sources.

Parameters:
  • name – The nonempty logical target name.

  • targets – Concrete targets keyed by federation source name.

  • _owner – The federation that owns this target binding.

Raises:
  • TypeError – If targets is not a mapping or _owner is not a federation.

  • ValueError – If the name, source set, or source names are invalid.

name: str
targets: collections.abc.Mapping[str, object]
class httk.store.ContinuationToken[source]

Bases: str

Carry an opaque URL-safe continuation value.

It is a str subclass so normal JSON serializers preserve it as a scalar value. Applications should pass a token returned by a page back unchanged; data backends validate its version, structure, and result-plan fingerprint before using any decoded value as a bound parameter.

Parameters:

value – The opaque continuation value.

exception httk.store.CountUnavailableError[source]

Bases: RuntimeError

Report that a store cannot provide an exact query count.

exception httk.store.MultipleResultsError[source]

Bases: LookupError

Report that a result-set one() operation found multiple results.

exception httk.store.NoResultError[source]

Bases: LookupError

Report that a result-set one() operation found no matching result.

class httk.store.PageableResultSetLike[source]

Bases: Protocol

Expose optional continuation-page capability on a frozen result set.

This deliberately extends neither ResultSetLike nor Searcher: stores that do not support seek pagination remain fully conforming to the required portable contracts.

page(*, size, order_by, cursor=None, include_total=False)[source]

Return one ordered continuation page.

class httk.store.PageOrder[source]

Order a continuation page by one named scalar result projection.

name identifies the name supplied to results() (or Searcher.output()), never a backend column object. The result-set implementation validates that it is a root scalar projection before it generates SQL.

Parameters:
  • name – The declared scalar output name used for ordering.

  • descending – Whether to order this field in descending order.

  • nulls – Whether null values sort first or last.

name: str
descending: bool = False
nulls: Literal['first', 'last'] = 'last'
exception httk.store.PaginationCursorError[source]

Bases: ValueError

Report that a continuation cursor is malformed, expired, or belongs to another result plan.

class httk.store.PortableQueryCapabilities[source]

Describe the query operations guaranteed by one property definition.

query-support expresses a cross-provider guarantee, not a particular server’s implementation detail. all optional is deliberately fail-closed here: it gives a portable client no operation it can rely on. A server may offer more, but that is not represented by the definition.

Parameters:
  • query_support – The normalized declared query-support level.

  • operations – The portable operation families guaranteed by the definition.

query_support: str | None
operations: frozenset[str]
supports(operation)[source]

Report whether operation is guaranteed by this definition.

Parameters:

operation (str) – The operation family to test.

Returns:

True when the operation is portable.

Return type:

bool

class httk.store.ResultPage[source]

Represent an immutable continuation-page result.

rows is always a tuple. Returned rows are ordinary persistent result rows, not the expiring proxies produced by SqlResultSet.cursor(). total is populated only when the caller explicitly asks for it.

Parameters:
  • rows – The persistent rows returned by the page.

  • next – The token for the next page, if one exists.

  • previous – The token for the previous page, if one exists.

  • total – The exact result count when requested, otherwise None.

rows: tuple[ResultRowLike, Ellipsis]
next: ContinuationToken | None
previous: ContinuationToken | None
total: int | None = None
class httk.store.ResultRow(values, names, resolver=None, guard=None)[source]

Represent one named result row by position, name, or attribute.

Parameters:
  • values (tuple[Any, Ellipsis]) – The row values in declaration order.

  • names (tuple[str, Ellipsis]) – The corresponding output names.

  • resolver (Any) – An optional lazy value resolver.

  • guard (Any) – An optional callback that rejects access to expired values.

property names: tuple[str, Ellipsis]

Return the declared output names.

property values: tuple[Any, Ellipsis]

Return the row values in declaration order.

class httk.store.ResultRowLike[source]

Bases: Protocol

Require named access to one result row.

property names: tuple[str, Ellipsis]

Return the row’s declared output names.

class httk.store.ResultSetLike[source]

Bases: Protocol

Require the common operations of a materialized result set.

first()[source]

Return the first row, or None when no row matches.

one()[source]

Return the only row, or raise when the count is not one.

scalars(name=None)[source]

Iterate over one named scalar output.

class httk.store.Searcher[source]

Bases: Protocol

Build one query and iterate its results.

Iteration yields one SearchResult per match, so item[0][0] is the first declared output of the match (typically the matched row object). The expressions received by add are always ones produced by this same backend’s search variables, so implementations may type them as their own expression class; a backend that needs a second (post-filter) evaluation position decides that from the expression itself, not from the caller.

offset: int
variable(target)[source]

Bind a query variable to target.

output(variable, name)[source]

Declare variable as a named result output.

add(expression)[source]

Add a filter expression to the query.

count()[source]

Return the exact count of the current query.

set_limit(limit)[source]

Set the query limit.

add_offset(offset)[source]

Add an offset to the query.

add_sort(field, descending)[source]

Add a field sort to the query.

results(**outputs)[source]

Return a result set for the requested named outputs.

class httk.store.SearchExpression[source]

Bases: Protocol

Require composable backend search expressions.

class httk.store.SearchField[source]

Bases: Protocol

Expose a queryable field of a search variable.

In addition to the methods below, fields support the rich comparison operators (==, !=, <, <=, >, >=), returning SearchExpression. The handlers invoke those via getattr(field, '__eq__')(value) since the comparison dunders cannot be typed as expression-returning.

The three string-matching methods take literal text: no wildcard or pattern syntax whatsoever crosses this contract, so % and _ (and any other metacharacter) match themselves. A backend is therefore free to implement them with SQL LIKE over an escaped pattern, with a regular expression, or with a full-text index — the choice is invisible here.

has(value)[source]

Match a list field containing value.

has_any(*values)[source]

Match a list field containing any of values.

has_only(*values)[source]

Match a list field containing no values outside values.

is_in(*values)[source]

Match a root scalar field whose value is one of values.

None is an explicit member: it matches a null field value, and its negation excludes nulls rather than inheriting SQL’s three-valued NOT IN (..., NULL) behavior.

Backends define the corresponding semantics for child or set fields; for example, a backend may use the existing has_only-style all-values reading for a child field.

contains(text)[source]

Match values containing text as a literal substring.

startswith(prefix)[source]

Match values beginning with the literal prefix.

endswith(suffix)[source]

Match values ending with the literal suffix.

class httk.store.SearchResult[source]

Bases: NamedTuple

Represent one match with declared output values and names.

values holds one entry per Searcher.output() call in declaration order; it is a tuple, so values, names = result and result[0][0] both work.

values: tuple[Any, Ellipsis]
names: tuple[str, Ellipsis]
class httk.store.SearchVariable[source]

Bases: Protocol

Bind a query variable to a target type whose attributes yield fields.

always_true/always_false are reserved names: they are real methods of the variable, never stored fields resolved through __getattr__. They exist so a translation layer can express a constant truth value without inventing a probe field. A field == field probe is NULL-unsound, since it yields NULL (not true) for a NULL field.

always_true()[source]

An expression that matches every row.

always_false()[source]

An expression that matches no row.

class httk.store.Store[source]

Bases: Protocol

Require a store that can create a query searcher.

searcher()[source]

Create an empty searcher.

exception httk.store.UnsupportedQueryError[source]

Bases: ValueError

Report that a valid query operation is outside a store’s supported profile.

httk.store.portable_query_capabilities(definition)[source]

Derive the portable operation subset for definition.

The operation names are "equality", "ordering", "stringmatching", and "set". They intentionally describe the query-language operation families rather than storage implementation. IS [NOT] KNOWN is part of the equality family because it is the NULL spelling of equality/inequality in the OPTIMADE filter language.

Parameters:

definition (httk.core.PropertyDefinition) – The OPTIMADE property definition to inspect.

Returns:

The guaranteed portable query capabilities.

Return type:

PortableQueryCapabilities

httk.store.portable_query_fields(entry_type, *, include=(), exclude=())[source]

Return the ordered portable query fields described by entry_type.

By default, this selects scalar fields and flat lists with at least one operation guaranteed by their definition. include is an explicit binding override for named existing properties; it is appended as a second ordered group after the derived fields, in entry-definition order among the included names, but does not manufacture query capabilities absent from that definition. exclude always wins. Both arguments reject unknown or duplicate names so binding mistakes cannot silently broaden a profile.

Parameters:
Returns:

Derived property names followed by explicitly included names.

Raises:

ValueError – If include or exclude contains an unknown or duplicate property name.

Return type:

tuple[str, Ellipsis]

type httk.store.FilterTranslationCategory = Literal['unrecognized-property', 'not-implemented', 'type-mismatch', 'internal'][source]

Why a filter could not be translated (see FilterTranslationError).

exception httk.store.FilterTranslationError(message, category, detail=None)[source]

Bases: Exception

Report that a filter cannot be translated into a search expression.

The exception message describes the failure; category classifies it neutrally (this module knows nothing about transports, so consumers map each category onto their own error codes):

  • "unrecognized-property" — the filter names an unknown property carrying a recognized prefix (a caller error);

  • "type-mismatch" — a filter constant does not match the property’s declared type (a caller error);

  • "not-implemented" — the filter uses a construct this translation (or the supplied handler table) does not support;

  • "internal" — an inconsistency in the translation itself.

detail optionally carries extra machine-readable context.

Parameters:
  • message (str) – The human-readable translation failure.

  • category (FilterTranslationCategory) – The neutral failure category.

  • detail (str | None) – Optional machine-readable failure context.

category: FilterTranslationCategory
detail = None
httk.store.filter_searcher(store, target, filter_string, *, entry_type, property_fulltypes, property_keys=None, handlers=None, recognized_prefixes=(), relationship_targets=(), related_property_resolver=None)[source]

Build a Searcher over store applying an OPTIMADE filter.

filter_string is an OPTIMADE filter string (parsed with httk.core.optimade.parse_optimade_filter()) or an already-parsed FilterAst. The searcher binds one search variable to target (the store-specific query target, declared as the searcher output named entry_type) and applies the translated filter. When handlers is not supplied, a default table is built with simple_property_handlers() from property_keys (or, when property_keys is also None, from an identity map over property_fulltypes). The remaining keyword arguments are passed through to translate_filter_ast().

Parameters:
  • store (httk.store.query.Store) – The backend store on which to build the searcher.

  • target (Any) – The backend query target to bind.

  • filter_string (str | httk.core.optimade.FilterAst) – An OPTIMADE filter string or parsed filter AST.

  • entry_type (str) – The output name and served entry type.

  • property_fulltypes (collections.abc.Mapping[str, str]) – Fulltypes keyed by recognized property name.

  • property_keys (collections.abc.Mapping[str, str] | None) – Optional mapping from property names to backend field names.

  • handlers (HandlerTable | None) – Optional prebuilt property handler table.

  • recognized_prefixes (tuple[str, Ellipsis]) – Prefixes whose unknown properties are errors.

  • relationship_targets (tuple[str, Ellipsis]) – Related entry types that support dotted filters.

  • related_property_resolver (RelatedPropertyResolver | None) – Optional resolver for related-property filters.

Returns:

A searcher with the translated filter already applied.

Raises:
Return type:

httk.store.query.Searcher

exception httk.store.PropertyValidationError(name, message)[source]

Bases: ValueError

Report that a value did not conform to its OPTIMADE property definition.

Carries the offending property name and a human-readable message. For single-value failures the message wraps the underlying jsonschema error message, and that jsonschema.exceptions.ValidationError is preserved as the chained __cause__.

Parameters:
  • name (str) – The name of the invalid property.

  • message (str) – The validation failure message.

name
message
httk.store.validate_property(definition, value)[source]

Validate a single value against definition’s JSON-Schema payload.

Builds a jsonschema.Draft202012Validator directly from the definition’s document (with the $schema meta-schema reference removed) and validates value against it using the local format checker. Returns None on success; raises PropertyValidationError on failure, chaining the underlying jsonschema.exceptions.ValidationError as the cause. No network access or registry lookup ever happens.

Parameters:
Returns:

None.

Raises:

PropertyValidationError – If value violates definition.

Return type:

None

httk.store.validate_record(entry_type, record)[source]

Validate every property present in record against entry_type.

Each key in record must be described by entry_type; unknown property names are rejected with a PropertyValidationError naming them and the entry type. id and type must both be present. Properties described by the definition but absent from record are simply not checked (serving a subset of the described properties is normal). The value of every property that is present is validated via validate_property(). Returns None on success.

Parameters:
Returns:

None.

Raises:

PropertyValidationError – If a property is unknown, id or type is missing, or a value violates its property definition.

Return type:

None