[Hypothesis](http://hypothesis.works) has approximately three discrete stages in its life so far: 1. Silly little prototype. 2. Fuck it, lets make this a real thing. 3. Post-Conjecture implementation. ---- The origin story of Hypothesis was really that I just wanted to learn Python and needed to come up with a project to hack on in it. For some reason property based testing had been on my mind recently (I'd previously used [ScalaCheck](https://www.scalacheck.org/) a fair bit), I looked around and the available Python options seemed... lackluster (I've since found [paycheck](https://pypi.python.org/pypi/paycheck/) which actually predates Hypothesis and is pretty good), so it seemed like an interesting choice of project. It really shows in early Hypothesis that my progression had gone Scala -> Ruby -> Python. ---- Hypothesis 1.3 is probably the first version of Hypothesis recognisable as its modern incarnation. Previously it had a really weird API based on using values to describe types. So e.g. the value `[float]` described a list of floats. This was cute but turned out to be a terrible idea. Describing things with simple function calls turns out to be far superior to doing cute but highly inflexible things like this.