module documentation
C3 linearization algorithm.
Class |
|
No class docstring; 1/2 property documented |
Class |
|
A class represents list of linearizations (dependencies) The last element of DependencyList is a list of parents. It's needed to the merge process preserves the local precedence order of direct parent classes. |
Exception |
|
Undocumented |
Function | c3 |
The merge operation of the C3 superclass linearization algorithm. |
Type Variable | T |
Undocumented |
The merge operation of the C3 superclass linearization algorithm.
Example of a naive usage:
>>> def mro(cls: T, getbases: Callable[[T], List[T]]) -> List[T]: ... result = [cls] ... if not (bases:=getbases(cls)): ... return result ... else: ... return result + c3_merge(*[mro(kls, getbases) for kls in bases], bases) >>> class B:... >>> class A(B):... >>> class B(B):... >>> class C(A,B):... >>> C.__mro__ (<class 'pydoctor.mro.C'>, <class 'pydoctor.mro.A'>, <class 'pydoctor.mro.B'>, <class 'pydoctor.mro.B'>, <class 'object'>) >>> mro(C, lambda cls: cls.__bases__) [<class 'pydoctor.mro.C'>, <class 'pydoctor.mro.A'>, <class 'pydoctor.mro.B'>, <class 'pydoctor.mro.B'>, <class 'object'>]
See Also | |
https://en.m.wikipedia.org/wiki/C3_linearization |