c3linear 0.1.1

Creator: bradpython12

Last updated:

Add to Cart

Description:

c3linear 0.1.1

C3 Linearization Algorithm
c3linear is a naïve implementation of
C3 linearization
algorithm. C3 used in Python 2.3+ for
Method Resolution Order.
See Raymond Hettinger's
Python’s super() considered super!
for more information.
Motivation
The project has come to life as a byproduct of debugging an
overcomplicated hierarchy of mixin classes. I thought I knew how
exactly MRO is computed, but it turned out I didn't.
I've tried to keep the code idiomatic and easy to follow at the
expense of performance. The project is really took a couple of hours
to complete. Although I didn't care about time complexity and didn't
check correctness as thoroughly as I should, I think the project may
help someone who wants to learn how Python's Method Resolution Order
works.
Usage
Library

Get the code and install it with python setup.py install (Python
3.6+ required)
Import from c3linear.mro import mro
Check against built-in MRO:

>>> class A: pass
>>> class B(A): pass
>>> mro(B) == B.mro()
True

Take a look at tests for more examples.
Testing

Install dependencies:

pip install -e .


(Optional) Install extra packages:

pip install -e .[extra]


Run tests with:

python setup.py test


Run flake8 for PEP8 compliance testing:

python setup.py flake8


Run mypy:

mypy c3linear/

Contributing
If you've found a bug, please open an issue describing the problem first.
Licence
The project is licensed under MIT License. For further information see
LINCENSE file.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.