
Aleksandr
28.04.2017
11:14:23
Но в общем-то метакласс с суперами штука довольно хрупкая

Aleksey
28.04.2017
11:22:18
Введу вторую ветку обсуждения. Пытаюсь понять на каком уровне лучше вводить моки.
Давайте представим, у меня есть сторонний сервис, который что-то там отдает по http. У меня есть обертка над ним, в виде отдельной библиотеки, которая моему клиентскому коду отдает данные уже в виде не json, а объектиками там, и прочим.
Теперь представим, есть первый класс, который в своем методе принимает выход из обертки, преобразует, и отдает дальше. Тут, видимо, mock нужен на вывод обертки.
Есть второй класс (ок, десяток разных мест), где используется результат преобразований в первом классе.. Какой тут нужен mock? Если я буду опять делать mock для обертки, то, имхо, неправильно это, у меня ж тут абстракция. Если я буду делать mock для результатов первого класса, то при изменении поведения первого класса, юнит-тесты не будут падать, если я забуду учесть нововведения везде..

Danil
28.04.2017
11:23:21

Aleksey
28.04.2017
11:23:49
Хмм.. Пока писал - понял, что наверняка эта задача как раз для fixture/mark замечательного pytest

Google

Danil
28.04.2017
11:24:17

Sergey
28.04.2017
11:26:56
Можно ещё взять requests и в валидатор прям засылать :D
https://github.com/validator/validator/wiki/Service-%C2%BB-Input-%C2%BB-POST-body

Eugene
28.04.2017
11:27:39

GNU/Docker
28.04.2017
11:28:25
Ооо
у нас есть похожая штука
только для того чтобы подмешать ещё один класс в иерархию где уже есть метакласс.

Eugene
28.04.2017
11:28:55
Жесть, конечно... Но работает! :)

Aleksander
28.04.2017
11:29:09

Aleksandr
28.04.2017
11:30:09

Eugene
28.04.2017
11:30:41

GNU/Docker
28.04.2017
11:31:15
Лично я так и не вкатился в них

Eugene
28.04.2017
11:31:15

GNU/Docker
28.04.2017
11:31:27
использовал только для синглтона и регистри.

Google

Aleksandr
28.04.2017
11:32:21
если разные метаклассы не ломают друг друга, то это и не метаклассы вовсе, скорее всего достаточно было бы декарировать

Eugene
28.04.2017
11:33:51
декоратор пришлось бы нахлабучивать на все классы. А их может дофига. Тоже не очень красиво, когда все классы задекорированы.

Aleksandr
28.04.2017
11:34:14
интроспекция на импорт тайме?

Eugene
28.04.2017
11:36:05
Что ты имеешь в виду?

Aleksandr
28.04.2017
11:36:57
ну заимпортил модуль с классами, прощелся по нему инспектом, и по условию навесил на них декораторы

Eugene
28.04.2017
11:37:43
Ну, я так и подумал. Это уж совсем неявно получается. Кто будет читать код, будет сильно ругаться.

Aleksandr
28.04.2017
11:38:19
в общем случае метаклассы у тебя будуи либо конфликтовать, либо вообще не соберется итоговый метакласс, так же как не собрался бы class A(int, str): pass
ну, это можно продать как АОП
и пуканы на ревью (возможно) не разорвет
метакласс нужен для того, чтоб вмешаться в сборку, причем обычно очень даже грубо, я бы сделал один метакласс который экспоузит достаточно всякой внутренней информации о классе в машинопонятном виде и писал бы декораторы поверх
решать метакласс конфликты тем более в рантайме это как то совсем дико, имхо

Alexander
29.04.2017
07:46:50
Кто нить юзал?
https://github.com/channelcat/sanic

Mehti
29.04.2017
10:24:59
Всегда скептически отношусь к таким сравнениям: https://github.com/channelcat/sanic#benchmarks
Что самое смешное, так это то что люди больше обращают внимание на статистику, не вникая в подробности тестирования.

GNU/Docker
29.04.2017
10:39:26
Нормальное сравнение, на мой взгляд. Синтетика - да. Просто показывает оверхед фреймворка.

Mehti
29.04.2017
10:41:08
Sanic Python 3.5 + uvloop 33,342 2.96ms
Flask gunicorn + meinheld 4,988 20.08ms
почему такое сравнение? где указана версия языка с flask? какие проекты еще запускали?
это еще ничего, вот когда сравнивают фреймворки на golang - тут то и начинается веселье

Roman
29.04.2017
10:46:49

GNU/Docker
29.04.2017
10:47:16
ГОЛАААНГ

Denis
29.04.2017
10:47:33
КТО СКАЗАЛ ГОЛАННГ

Google

Mehti
29.04.2017
10:48:51
На западе все говорят golang. Что вам не нравится?)
Go (often referred to as golang)..
https://en.wikipedia.org/wiki/Go_(programming_language)
Ну хорошо, почти все)
Это связано с путаницей со словом go

Denis
29.04.2017
10:51:03

Mehti
29.04.2017
10:52:01

Denis
29.04.2017
10:52:30

Roman
29.04.2017
10:52:34

Denis
29.04.2017
10:53:26
gin
Он отстал от жизни, у него глупыф контекст, свой.

Mehti
29.04.2017
10:54:05

Denis
29.04.2017
10:54:23
А ещё много глупых предположений в коде, вроде того что если ты делаешь abort, то нужно вообще менять контент тайп на текст

Mehti
29.04.2017
10:55:01

Denis
29.04.2017
10:55:16
Есть ещё beego, но это скорее эдакая джанга на гоу

Mehti
29.04.2017
10:56:27

Denis
29.04.2017
10:57:43
Если реально хочется не просто сервис, а целый сайтик, то в beego всё есть и очень хорошо сделано

Google

Roman
29.04.2017
11:44:01

Denis
29.04.2017
11:46:26

GNU/Docker
29.04.2017
11:51:41
Я сказал голанг
Потому что это чат не про голанг

Admin
ERROR: S client not available

Denis
29.04.2017
11:52:22
Сорри, меня легко засуммонить так :(

Aleksander
29.04.2017
17:08:51
привет, а есть среди нас спец по PyQt ?
почему в QWebView self.page().mainFrame().contentSize() может возвращать разные размера причем с одинаковым содержимым ?

Dmitry
29.04.2017
17:13:20

Vitali K.
29.04.2017
17:20:03

Eugene
29.04.2017
18:15:38

Aleksander
29.04.2017
18:54:48
https://gist.github.com/alifanov/e4ec7f66ea4ff13050c69c0e282140fd
вот код, дабы не быть голословным))

Vitali K.
29.04.2017
18:57:35
А какие значения?
Я могу предположить что при первом вызове HTML не отрендерился например)

Aleksander
29.04.2017
19:00:08
https://gist.github.com/alifanov/35ad46503f62d408c078a2bbbfca6e14
в том то и дело что не при первом падает
а рандомно после нескольких успешных

Dmitry
29.04.2017
19:17:19
а если небольшую задержку добавить? после
setHtml()

Google

Aleksander
29.04.2017
19:36:53
все равно падает
разобрался
у page() нужно stViewportSize делать до основного цикла и не менять динамически
тогда норм работает

Dmitry
29.04.2017
19:45:15
??

Dmitrii
30.04.2017
05:56:21
Объясните мне, почему не смотря на то, что python и java+js занимают лидирующее положение в вебдеве, шарп каким-то образом пользуется спросом (пусть и не таким большим)?

Serge
30.04.2017
06:43:32

Julia
30.04.2017
07:41:32

Dmitrii
30.04.2017
07:42:05

Aleksander
30.04.2017
07:57:21
@nonamenix feature-request для бота - вводишь keywords он выдает протегированных юзеров чата))

Eugene
30.04.2017
08:22:34
Еще больший спец @iroln
Надо сказать, что с Qt WebKit мне не приходилось ничего делать. :)
Всегда хватало QTextBrowser/QTextEdit.

Serge
30.04.2017
08:59:46

Aleksander
30.04.2017
09:36:19
Благо они одинаковые по названиям )

Dmitry
30.04.2017
10:10:00
http://aroberge.blogspot.ru/2017/04/nonstandard-module-and-pep-542.html

Serge
30.04.2017
10:50:07

Aleksander
30.04.2017
11:23:59
кстати а почему itgm в вск ?
потом же понедельник

Sergey
30.04.2017
11:25:19