I've been dissatisfied with all of them actually!
But both Deal (https://pypi.org/project/deal/) and icontract (https://pypi.org/project/icontract/) have merit.
I can't remember where I saw it, but the author of deal seemed a bit annoyed at the existence of icontract, maybe on a mailing list.
I've played around with CrossHair (https://pypi.org/project/crosshair-tool/) as well a bit, and that supports both deal and icontract.
icontract also seems to integrate with hypothesis (https://pypi.org/project/hypothesis/) , which deal does not do explicitly.