gtirb.util module

General utilities usable by any other GTIRB submoudle.

class gtirb.util.AddrRange(*args, **kwargs)[source]

Bases: Protocol

An object spanning a range of addresses.

__callable_proto_members_only__ = False
__init__(*args, **kwargs)
__protocol_attrs__ = {'address', 'size'}
property address: int | None
property size: int | None
exception gtirb.util.DeserializationError[source]

Bases: GtirbError

gtirb.util.DictLike

Any value that can be passed to the constructor of dict; that is, a mapping or iterable yielding key-value tuples.

alias of Union[Mapping[K, V], Iterable[Tuple[K, V]]]

class gtirb.util.DictWrapper(*args)[source]

Bases: MutableMapping[K, V]

__delitem__(i)[source]
Return type:

None

__getitem__(i)[source]
Return type:

typing.TypeVar(V)

__init__(*args)[source]
__iter__()[source]
Return type:

typing.Iterator[typing.TypeVar(K)]

__len__()[source]
Return type:

int

__setitem__(i, v)[source]
Return type:

None

exception gtirb.util.GtirbError[source]

Bases: Exception

class gtirb.util.IndexedContainer(*args, **kwargs)[source]

Bases: Protocol[T_contra]

Container wth an index that can be updated.

__callable_proto_members_only__ = True
__init__(*args, **kwargs)
__protocol_attrs__ = {'_index_add', '_index_discard'}
class gtirb.util.ListWrapper(*args)[source]

Bases: MutableSequence[T]

__delitem__(i)[source]
Return type:

None

__getitem__(i)[source]
Return type:

typing.Union[typing.TypeVar(T), typing.MutableSequence[typing.TypeVar(T)]]

__init__(*args)[source]
__len__()[source]
Return type:

int

__setitem__(i, v)[source]
Return type:

None

append(v)[source]

S.append(value) – append value to the end of the sequence

Return type:

None

extend(other)[source]

S.extend(iterable) – extend sequence by appending elements from the iterable

Return type:

None

insert(i, v)[source]

S.insert(index, value) – insert value before index

Return type:

None

remove(v)[source]

S.remove(value) – remove first occurrence of value. Raise ValueError if the value is not present.

Return type:

None

class gtirb.util.OffsetRange(*args, **kwargs)[source]

Bases: Protocol

An object spanning a range of offsets.

__callable_proto_members_only__ = False
__init__(*args, **kwargs)
__protocol_attrs__ = {'offset', 'size'}
property offset: int
property size: int
class gtirb.util.ParentGetter(*args, **kwargs)[source]

Bases: Protocol[T_contra]

Interface for getting an _IndexedContainer for an instance.

__call__(instance)[source]

Call self as a function.

Return type:

typing.Optional[gtirb.util.IndexedContainer[typing.TypeVar(T_contra, contravariant=True)]]

__callable_proto_members_only__ = True
__init__(*args, **kwargs)
__protocol_attrs__ = {'__call__'}
class gtirb.util.SetWrapper(*args)[source]

Bases: MutableSet[T]

__contains__(v)[source]
Return type:

bool

__init__(*args)[source]
__ior__(other)[source]
Return type:

typing.TypeVar(_SetWrapperSelf, bound= SetWrapper[typing.Any])

__iter__()[source]
Return type:

typing.Iterator[typing.TypeVar(T)]

__len__()[source]
Return type:

int

__or__(other)[source]
Return type:

typing.Set[typing.Union[typing.TypeVar(T), typing.TypeVar(S)]]

add(v)[source]

Add an element.

Return type:

None

clear()[source]

This is slow (creates N new iterators!) but effective.

Return type:

None

discard(v)[source]

Remove an element. Do not raise an exception if absent.

Return type:

None

pop()[source]

Return the popped value. Raise KeyError if empty.

Return type:

typing.TypeVar(T)

update(*others)[source]
Return type:

None

gtirb.util.get_desired_range(addrs)[source]
Return type:

range

gtirb.util.nodes_at(nodes, addrs)[source]
Return type:

typing.Iterable[typing.TypeVar(AddrRangeT, bound= gtirb.util.AddrRange)]

gtirb.util.nodes_on(nodes, addrs)[source]
Return type:

typing.Iterable[typing.TypeVar(AddrRangeT, bound= gtirb.util.AddrRange)]

gtirb.util.symbolic_expressions_at(nodes, addrs)[source]
Return type:

typing.Iterable[typing.TypeVar(T_cov, covariant=True)]