module documentation

Code related to sequence merging and MRO.

Exception MROError Undocumented
Function Dedup Return a sequence in the same order, but with duplicates removed.
Function GetBasesInMRO Get the given class's bases in Python's method resolution order.
Function MergeSequences Merge a sequence of sequences into a single sequence.
Function MROMerge Merge a sequence of MROs into a single resulting MRO.
Function _ComputeMRO Compute the MRO.
Function _Degenerify Undocumented
Function _GetClass Undocumented
def Dedup(seq): (source)

Return a sequence in the same order, but with duplicates removed.

def GetBasesInMRO(cls, lookup_ast=None): (source)

Get the given class's bases in Python's method resolution order.

def MergeSequences(seqs): (source)

Merge a sequence of sequences into a single sequence. This code is copied from https://www.python.org/download/releases/2.3/mro/ with print statements removed and modified to take a sequence of sequences. We use it to merge both MROs and class templates. Args: seqs: A sequence of sequences. Returns: A single sequence in which every element of the input sequences appears exactly once and local precedence order is preserved. Raises: ValueError: If the merge is impossible.

def MROMerge(input_seqs): (source)

Merge a sequence of MROs into a single resulting MRO. Args: input_seqs: A sequence of MRO sequences. Returns: A single resulting MRO. Raises: MROError: If we discovered an illegal inheritance.

def _ComputeMRO(t, mros, lookup_ast): (source)

Compute the MRO.

def _Degenerify(types): (source)

Undocumented

def _GetClass(t, lookup_ast): (source)

Undocumented