haive.core.schema.compatibility.mergersΒΆ

Schema merging strategies for combining multiple schemas.

ClassesΒΆ

ConflictResolution

How to resolve field conflicts during merge.

IntersectionMergeStrategy

Include only fields present in all schemas.

MergeContext

Context for merge operations.

MergeStrategy

Abstract base for merge strategies.

SchemaMerger

Main schema merging engine.

UnionMergeStrategy

Include all fields from all schemas.

FunctionsΒΆ

create_intersection_schema(*schemas[, name])

Create an intersection of multiple schemas.

create_union_schema(*schemas[, name])

Create a union of multiple schemas.

merge_schemas(schemas[, strategy, name])

Merge multiple schemas using specified strategy.

Module ContentsΒΆ

class haive.core.schema.compatibility.mergers.ConflictResolution[source]ΒΆ

Bases: str, enum.Enum

How to resolve field conflicts during merge.

Initialize self. See help(type(self)) for accurate signature.

class haive.core.schema.compatibility.mergers.IntersectionMergeStrategy[source]ΒΆ

Bases: MergeStrategy

Include only fields present in all schemas.

merge_fields(field_infos, context)[source]ΒΆ

Merge field definitions.

Parameters:
Return type:

haive.core.schema.compatibility.types.FieldInfo | None

should_include_field(field_name, schemas_with_field, total_schemas)[source]ΒΆ

Include only if in all schemas.

Parameters:
  • field_name (str)

  • schemas_with_field (list[str])

  • total_schemas (int)

Return type:

bool

class haive.core.schema.compatibility.mergers.MergeContext[source]ΒΆ

Context for merge operations.

Init .

Returns:

Add return description]

Return type:

[TODO

add_conflict(field_name, schemas, reason, resolution)[source]ΒΆ

Log a conflict.

Parameters:
Return type:

None

add_warning(warning)[source]ΒΆ

Add a warning.

Parameters:

warning (str)

Return type:

None

track_field_source(field_name, schema_name)[source]ΒΆ

Track which schema a field came from.

Parameters:
  • field_name (str)

  • schema_name (str)

Return type:

None

class haive.core.schema.compatibility.mergers.MergeStrategy[source]ΒΆ

Bases: abc.ABC

Abstract base for merge strategies.

abstractmethod merge_fields(field_infos, context)[source]ΒΆ

Merge multiple field definitions.

Parameters:
Return type:

haive.core.schema.compatibility.types.FieldInfo | None

abstractmethod should_include_field(field_name, schemas_with_field, total_schemas)[source]ΒΆ

Determine if field should be included in merged schema.

Parameters:
  • field_name (str)

  • schemas_with_field (list[str])

  • total_schemas (int)

Return type:

bool

class haive.core.schema.compatibility.mergers.SchemaMerger(strategy='union', analyzer=None, compatibility_checker=None)[source]ΒΆ

Main schema merging engine.

Init .

Parameters:
merge_schemas(schemas, name=None, base_class=None)[source]ΒΆ

Merge multiple schemas into one.

Parameters:
Returns:

Merged schema class

Return type:

type[pydantic.BaseModel]

class haive.core.schema.compatibility.mergers.UnionMergeStrategy(conflict_resolution=ConflictResolution.LAST_WINS)[source]ΒΆ

Bases: MergeStrategy

Include all fields from all schemas.

Init .

Parameters:

conflict_resolution (ConflictResolution) – [TODO: Add description]

merge_fields(field_infos, context)[source]ΒΆ

Merge field definitions.

Parameters:
Return type:

haive.core.schema.compatibility.types.FieldInfo | None

should_include_field(field_name, schemas_with_field, total_schemas)[source]ΒΆ

Include all fields.

Parameters:
  • field_name (str)

  • schemas_with_field (list[str])

  • total_schemas (int)

Return type:

bool

haive.core.schema.compatibility.mergers.create_intersection_schema(*schemas, name=None)[source]ΒΆ

Create an intersection of multiple schemas.

Parameters:
Return type:

type[pydantic.BaseModel]

haive.core.schema.compatibility.mergers.create_union_schema(*schemas, name=None)[source]ΒΆ

Create a union of multiple schemas.

Parameters:
Return type:

type[pydantic.BaseModel]

haive.core.schema.compatibility.mergers.merge_schemas(schemas, strategy='union', name=None)[source]ΒΆ

Merge multiple schemas using specified strategy.

Parameters:
Return type:

type[pydantic.BaseModel]