I think it's easier to do the validation in Python, and the
general performance would be better. Since validation is done in Python, you can detect the errors and raise exception, avoiding the communication to the Arduino. And adding support for a new board is easier with the current schema (one board = add 1 line in 1 file), something like:
this_arduino_type = { 6, 14, 1<<3 | 1<<5 | 1<<6 | 1<<9 | 1<<10 | 1<<11, 1, 32 }; // Arduino UNO
Anyway, I'll give your idea some thoughts, I found it as an interesting alternative, and performance improvements are always welcome!
Thanks!