Hi,
René sent an email asking if I had any input (as the author of pymunk), so here I am. In general I think it seems like a very well versed vector library in the making :)
A couple of comments:
1. A function that normalizes and returns the length before normalizing in one call can be useful and be a little bit faster than doing two calls. In the pymunk.vec2d class its called normalize_return_length.
2. A user asked me why a vector cant be scaled up again after it has been scaled down to 0 (which is not supported in the pymunk.vec2d class or pygame.math). It would be a very useful feature and also beginner friendly. However, I dont see a way to do it in a good way so I havent implemented anything.
3. As René pointed out in most of the Pymunk examples Y is converted so that positive Y points up to keep examples consistent and close to "real" physics. Would be nice if pygame could handle it easily, maybe something you could set in the beginning of you code? But Im not sure if it fits here :)
4. In many cases Pygame methods expect an integer, such as position in pygame.draw.circle(). Since Vector2 seems to be a float either some automatic rounding or a method Vector2.int_tuple or similar would be convenient?
5. You already do some benchmarking, did you try Pypy?
/Victor