It sounds to me like you are looking for template classes (which are available in C++) but I don't know that Python can do that. But even with templates you eventually have to write code that will take for example
a vec2(float,float) can convert to say vec2(int,int) vec2(float,int) vec2(int,float) vec2(double,float) vec2(float,double) vec2(double,double) vec2(int,double) vec2(double,int) if you want all those options - this is not bloat.

There is no checklist other than what conversions you need. If you need only need vec2(float,float) to vec2(int,int) that's all you write. No one can tell you what you need. OpenGl has native support for float,int,doubles and bytes. But they are
not all valid in all combinations. With shaders you can pack several things into 1 byte if you want and people do.