Начну издалека, я сейчас пишу скрипт для тестирования сервера. Этот сервер общается с клиентом по специфическому протоколу, причём этого протокола есть уже несколько версий и вполне возможно будут добавляться ещё. Как правило следующая версия расширяет функционал предыдущей, но может и вносить некоторые изменения. Сам код тестов особо к версии протокола не привязан и по задумке должен выполнятся с той версией которую укажешь при старте. Сейчас все протоколы разнесены в отдельные модули и между собой никак не связаны, что жутко неудобно если нужно внести какие-то изменения. Импорт тоже реализован, мягко говоря, через одно место.
И вот тут как раз встаёт вопрос как это можно красиво реализовать?
Понимаю, что вопрос для вас несколько абстрактный, но хотелось бы услышать ваши советы и идеи по этому вопросу.