hydra.demos.genpg.transform module

Functions for transforming property graph mappings into property graph elements.

hydra.demos.genpg.transform.concat_pairs(acc: tuple[Sequence[T0], Sequence[T1]], p: tuple[Sequence[T0], Sequence[T1]]) tuple[Sequence[T0], Sequence[T1]]

Concatenate two pairs of lists.

hydra.demos.genpg.transform.decode_cell(col_type: ColumnType, mvalue: object) object

Decode a single cell value based on its column type.

hydra.demos.genpg.transform.decode_row(col_types: Sequence[ColumnType], row: DataRow[str]) object

Decode a single data row based on column types.

hydra.demos.genpg.transform.decode_table(table_type: TableType, table: Table[str]) object

Decode a table of strings into a table of terms based on column type specifications.

hydra.demos.genpg.transform.element_is_edge(el: object) bool

Check if an element is an edge.

hydra.demos.genpg.transform.element_is_vertex(el: object) bool

Check if an element is a vertex.

hydra.demos.genpg.transform.element_specs_by_table(graph: LazyGraph[Term]) object

Group element specifications by their source table.

hydra.demos.genpg.transform.evaluate_edge(cx: T0, g: Graph, edge_spec: Edge[Term], record: Term) object

Evaluate an edge specification against a record term to produce an optional edge.

hydra.demos.genpg.transform.evaluate_properties(cx: T0, g: Graph, specs: Mapping[T1, Term], record: Term) object

Evaluate property specifications against a record term.

hydra.demos.genpg.transform.evaluate_vertex(cx: T0, g: Graph, vertex_spec: Vertex[Term], record: Term) object

Evaluate a vertex specification against a record term to produce an optional vertex.

hydra.demos.genpg.transform.find_tables_in_term(term: Term) Set[str]

Find table names referenced in a term by looking for record projections.

hydra.demos.genpg.transform.find_tables_in_terms(terms: Sequence[Term]) Set[str]

Find table names referenced in multiple terms.

hydra.demos.genpg.transform.list_any(pred: Callable[[T0], bool], xs: Sequence[T0]) bool

Check if any element in a list satisfies a predicate.

hydra.demos.genpg.transform.make_lazy_graph(vertices: Sequence[Vertex[T0]], edges: Sequence[Edge[T0]]) LazyGraph[T0]

Construct a LazyGraph from vertices and edges.

hydra.demos.genpg.transform.normalize_field(s: str) object

Normalize a CSV field value - empty becomes Nothing.

hydra.demos.genpg.transform.parse_csv_char(state: tuple[tuple[Sequence[object], str], bool], c: int) tuple[tuple[Sequence[object], str], bool]

Process a single character during CSV parsing.

hydra.demos.genpg.transform.parse_csv_line(line: str) object

Parse a CSV line into fields. Empty fields become Nothing.

hydra.demos.genpg.transform.parse_single_line(line: str) object

Parse a single CSV line, returning Nothing for empty lines.

hydra.demos.genpg.transform.parse_table_lines(has_header: bool, raw_lines: Sequence[str]) object

Parse raw CSV lines into a Table of strings.

hydra.demos.genpg.transform.strip_whitespace(s: str) str

Strip leading and trailing whitespace from a string.

hydra.demos.genpg.transform.table_for_edge(edge: Edge[Term]) object

Get the table name for an edge specification. Returns an error if not exactly one table is referenced.

hydra.demos.genpg.transform.table_for_vertex(vertex: Vertex[Term]) object

Get the table name for a vertex specification. Returns an error if not exactly one table is referenced.

hydra.demos.genpg.transform.table_types_by_name(table_types: Sequence[TableType]) Mapping[RelationName, TableType]

Build a map from table name to table type.

hydra.demos.genpg.transform.term_row_to_record(table_type: TableType, row: DataRow[Term]) Term

Convert a data row to a record term given a table type.

hydra.demos.genpg.transform.transform_record(cx: T0, g: Graph, vspecs: Sequence[Vertex[Term]], especs: Sequence[Edge[Term]], record: Term) object

Transform a record through vertex and edge specifications to produce vertices and edges.

hydra.demos.genpg.transform.transform_table_rows(cx: T0, g: Graph, vspecs: Sequence[Vertex[Term]], especs: Sequence[Edge[Term]], table_type: TableType, rows: Sequence[DataRow[Term]]) object

Transform all rows from a table through vertex/edge specifications.