Really, three modes are required: viper mode for extended functionality, upgrade compatibility, for processing python programs as Viper, and downgrade compatibility, for testing codes targetted at Python with Viper. The difference between the two compatibility modes is that python upgrade mode supports viper extensions, but defers to python rules when there is a conflict, whereas downgrade mode denies all viper extensions. The latter is useful if Viper is used to help debug python programs.
Modal behaviour is not implemented yet.