boundlab.error.alignment.SpanTable#

class boundlab.error.alignment.SpanTable[source]#

Bases: dict[T, Span], Generic

Maps each error symbol to its Span, in ID order.

The ID ordering makes layouts canonical: two tables over the same symbol set are identical, so alignment reduces to a sorted merge.

Methods

__init__

align_with

Merge two tables and describe how each maps into the union.

clear

copy

fromkeys

Create a new dictionary with keys from iterable and values set to value.

get

Return the value for key if key is in the dictionary, else default.

items

keys

pop

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem

Remove and return a (key, value) pair as a 2-tuple.

setdefault

Insert key with a value of default if key is not in the dictionary.

subset_of

Whether every symbol of this table appears in other.

tree_flatten

tree_unflatten

update

If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

validate

Check spans are contiguous and ID-ordered; return the total length.

values

__init__(*args)[source]#
validate()[source]#

Check spans are contiguous and ID-ordered; return the total length.

align_with(other)[source]#

Merge two tables and describe how each maps into the union.

Returns the union table (over self ∪ other, ID-ordered) plus a list of merged Alignment runs; shared symbols land in the same output span, which is precisely what keeps them correlated across the two values being combined.

subset_of(other)[source]#

Whether every symbol of this table appears in other.

tree_flatten()[source]#
classmethod tree_unflatten(aux, data)[source]#
classmethod __new__(*args, **kwargs)#
clear() → None.  Remove all items from D.#
copy() → a shallow copy of D#
classmethod fromkeys(iterable, value=None, /)#

Create a new dictionary with keys from iterable and values set to value.

get(key, default=None, /)#

Return the value for key if key is in the dictionary, else default.

items() → a set-like object providing a view on D's items#
keys() → a set-like object providing a view on D's keys#
pop(k[, d]) → v, remove specified key and return the corresponding value.#

If the key is not found, return the default if given; otherwise, raise a KeyError.

popitem()#

Remove and return a (key, value) pair as a 2-tuple.

Pairs are returned in LIFO (last-in, first-out) order. Raises KeyError if the dict is empty.

setdefault(key, default=None, /)#

Insert key with a value of default if key is not in the dictionary.

Return the value for key if key is in the dictionary, else default.

update([E, ]**F) → None.  Update D from mapping/iterable E and F.#

If E is present and has a .keys() method, then does: for k in E.keys(): D[k] = E[k] If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k]

values() → an object providing a view on D's values#