Voronoi is a lot of fun indeed. I gave scipy.spatial.Voronoi a try, and got it to work (sort of; some polygons are missing):
# based on http://stackoverflow.com/questions/27548363/from-voronoi-tessellation-to-shapely-polygons
from random import randrange
from scipy.spatial import Voronoi
size(600, 300)
pointsAmount = 160
points = [(randrange(width()), randrange(height())) for i in range(pointsAmount)]
V = Voronoi(points)
regions = [V.vertices[line] for line in V.regions if -1 not in line]
stroke(1)
strokeWidth(2)
for R in regions:
pts = [(float(x), float(y)) for x, y in R]
if len(pts):
fill(random(), random(), 0.7, 0.7)
polygon(*pts)
r = 1
stroke(None)
fill(0)
for x, y in points:
oval(x-r, y-r, r*2, r*2)
saveImage('voronoi-drawbot-2.png')
and here is the bitmap version ported from PIL
happy voronoiing!