Kent Beck’s rules of simple design reworded by Kevin Rutherford on Refactoring in Ruby
To provide a reliable concurrency model, curdling needs to be simple and well tested. Writing good tests is also an excellent technique to keep your code simple. So we can say that tests are twice important for us.
Curdling currently has nearly 90% of test coverage and almost 50% of the code base is basically our tests directory. This number will eventually increase.
While curdling is born in the highest hopes to reach every single Python developer in the world and attract as many contributors as possible, we still have to ensure quality and stability in the product.
Although, if a reasonable change contains proper tests, it will likely be merged. It’s strongly suggested for developers willing to send pull requests to read a few tests already present in the code base.
Curdling’s most noticeable feature is the package installer. Just like pip install, the command curd install will find requirements in external repositories, build and install packages for you. But blazingly fast.
The install command is focused on both speed and accuracy. Curdling will always try to find the best version for a requirement set.
The Retrieve and Build stage will do the find, build and dependency check. This initial cycle won’t finish until we ensure that all the requested requirements were processed.
In the sequence, the Wheel Installer will ensure that all the requirements initially requested by the user were found during the R&B process; then it will install everything for you. These and all the other subsystems of the installer are going to be studied in depth in the next sections.
Partial representation of the R&B flow:
This process basically reads requirements from both the -r requirements.txt file and from the command line arguments (curd install <packages>). Let’s imagine the following call:
$ curd install Flask
What we want
Problems we have
What should happen
Steps from 2 to 13 will be repeated for each dependency found.
This is the second step after populating the installer queue. When this queue is full and the previous step is finished. We’ll just consume the whole list and install the wheels required by the user and all its dependencies collected during the R&B process.