Size: a a a

2020 February 04

💭П

💭 Руслан Прохоров in rannts
Alexander Zelenyak
У меня это реализовано передачей переменной окружения. Можно указать как основной реп, так и свой.
ну вот я сделал в setup.cmd переменную в которой лежит pip.ini и делаю pip install .
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Alexander Zelenyak
У меня это реализовано передачей переменной окружения. Можно указать как основной реп, так и свой.
Ну это ведь надо где-то сбоку указывать, или передавать аргуметом в pip. Можно аналогично прописать в requirements.txt.
Хотя если есть setup.cmd для ещё каких-то дополнительных задач, то можно и в него всё прописать.
источник

AZ

Alexander Zelenyak in rannts
Ну типа того, да. Мы же не в вакууме пакеты собираем.
источник

💭П

💭 Руслан Прохоров in rannts
Kirill (Cykooz) Kuzminykh
Ну это ведь надо где-то сбоку указывать, или передавать аргуметом в pip. Можно аналогично прописать в requirements.txt.
Хотя если есть setup.cmd для ещё каких-то дополнительных задач, то можно и в него всё прописать.
У меня его Jenkins запускает, что бы сделать виртуальное окружение, туда поставить пакеты и запустить приложение.
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
💭 Руслан Прохоров
У меня его Jenkins запускает, что бы сделать виртуальное окружение, туда поставить пакеты и запустить приложение.
Если только для jenkins, то можно заменить на Jenkinsfile
источник

💭П

💭 Руслан Прохоров in rannts
Kirill (Cykooz) Kuzminykh
Если только для jenkins, то можно заменить на Jenkinsfile
Честно, я пока не вижу сильной разницы на своих задачах между pipeline и standalone job. Кроме той, что batch я знаю хорошо, а в вот Groovy не очеь )
источник
2020 February 05

БС

Байт Словович in rannts
@cykooz помниться ты говорил у тебя есть либо для сравнения словарей в тестах, напомни плиз
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
cykooz.testing
источник

БС

Байт Словович in rannts
хм, похоже она не может сравнить словари, где надо заигнорить пару полей 😞  
ANY не подходит, ибо я не хочу "портить" исходный образец
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Байт Словович
хм, похоже она не может сравнить словари, где надо заигнорить пару полей 😞  
ANY не подходит, ибо я не хочу "портить" исходный образец
В каком смысле не подходит? Если надо проверить наличие ключа, но не сравнивать значения - это как раз через ANY делается.
источник

БС

Байт Словович in rannts
Но для этого мне надо новый словарь сделать, а я "нихочу" — ленивый. Код примерно такой:
data = {}  # словарь с кучей полей
updated_data = my_function(data)
assert data == updated_data, кроме пары полей.
...
updated_data2 = my_function(updated_data)
assert updated_data2 == updated_data, кроме пары уже других полей.

С твоей либой прийдется создавать ПРоверочный Dict.
В моем случае нужен более универсальный сравнитель, аля
assert compare(updated_data, data, skip=["1.etag", "1.last_modified"])
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
А, ну да - тут только если делать копию updated_data и подменять в нём значения полей на ANY
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
У меня таких кейсов не было. Мне обычно приходится сравнивать результат с "константой".
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Байт Словович
Но для этого мне надо новый словарь сделать, а я "нихочу" — ленивый. Код примерно такой:
data = {}  # словарь с кучей полей
updated_data = my_function(data)
assert data == updated_data, кроме пары полей.
...
updated_data2 = my_function(updated_data)
assert updated_data2 == updated_data, кроме пары уже других полей.

С твоей либой прийдется создавать ПРоверочный Dict.
В моем случае нужен более универсальный сравнитель, аля
assert compare(updated_data, data, skip=["1.etag", "1.last_modified"])
У способа с функцией для сравнения словарей есть существенный минус - pytest сможет тебе в ошибке только сказать, что ожидалось True, а получилось False. При использовании == pytest выведет какие именно поля в словарях разошлись.
источник

БС

Байт Словович in rannts
это да.. Но я так и не научился нормально готовить pytest который бы нормально показывал где разница, особенно если есть вложенные словари / списки. Все равно приходиться дополнительные "принты" ставить
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Ну да, там вывод в стиле patch-файлов - сложновато читать бывает иногда
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
В твоём варианте кстати не очень понятно как парсить "1.etag":
- это ключ "etag"  в словаре с ключём "1"
 - или с ключём 1 (число)
- или это один такой строковый ключ
источник

БС

Байт Словович in rannts
ну если кто придумает такой компоратор, он определит синтаксис и будет парсить. Я подразумевал, что первый параметр, в нем поле etag.
источник

БС

Байт Словович in rannts
хотя в контексте skip'а, указывать какой из параметров — бессмыслено
источник
2020 February 06

KK

Kirill (Cykooz) Kuzminykh in rannts
Байт Словович
Но для этого мне надо новый словарь сделать, а я "нихочу" — ленивый. Код примерно такой:
data = {}  # словарь с кучей полей
updated_data = my_function(data)
assert data == updated_data, кроме пары полей.
...
updated_data2 = my_function(updated_data)
assert updated_data2 == updated_data, кроме пары уже других полей.

С твоей либой прийдется создавать ПРоверочный Dict.
В моем случае нужен более универсальный сравнитель, аля
assert compare(updated_data, data, skip=["1.etag", "1.last_modified"])
Если my_function() делает копию data и добавляет в неё новые ключи на первый уровень вложености, то можно вот так сравнить без учёта добавляемых полей
assert updated_data == D(data)
источник