Мы создаем новые филиалы на работе, которые будут иметь одну и ту же библиотеку.
Проблема в том, что если мы обновим одну библиотеку, вы можете разорвать все не обновленные приложения.
Поэтому мы хотели бы изменить наши библиотеки.
Я планировал сделать это либо так
loader.load(name='mylib', version='1.0')
, либо, возможно, так:
import mylib
mylib.load(version='1.0')
Вопрос в том, как будет работать этот погрузчик.
Наивный подход состоит в том, чтобы иметь каждую версию в своей папке, проблема с этим, однако, заключается в том, что если есть общая ошибка во всех версиях, каждая версия должна быть исправлена отдельно.
Несколько лучший подход (для ремонтопригодности) состоит в том, чтобы иметь все версии библиотеки в одном файле и вызвать некоторую функцию загрузки, которая создает ссылки на функции. Я не знаю, насколько это будет довольно (мы можем получить файл монстра в несколько тысяч строк, мы, конечно, могли бы удалить старые, неиспользуемые версии).
Чтобы уменьшить количество версий, я планирую увеличивать номер версии только при разрыве совместимости, а не при исправлении ошибок или добавлении нового материала.
Есть ли что-то подобное встроенное в python или любой другой подход, который бы сработал?
Есть ли у кого-нибудь опыт такого рода вещей?
Я могу добавить, что вещи, которые используют libs, являются тестовыми случаями, мы просто хотим, чтобы тестер в ветвь и запустить ./testit.py, ничего другого.
Решение основано на предложении Гринго Суаве.
class MyClass_1_0:
def func1(self):
return 'Baz'
def func2(self):
return 'Bar'
class MyClass_1_1(MyClass_1_0):
# Overwriting a function:
def func1(self):
return 'Foo'
# Definining a new function which uses a function
# from a previous version:
def func3(self):
print("{} {}".format(self.func1(), self.func2()))
# Change this to the latest version for stuff that always wants the latest
class MyClass(MyClass_1_1): pass
Пример использования:
>>> from my.module import MyClass_1_1 as MyClass
>>> m = MyClass()
>>> m.func3()
Foo Bar
-121--1646956- Существует ли функция sleep () для Processing.js? Если нет, что было бы подходящей альтернативой для добавления задержки в цикл draw ()?
Я использую JQuery с обработкой - могу ли я использовать функцию JQuery или Javascript, чтобы вызвать задержку типа сна в цикле?
Спасибо!