
Roman
23.09.2016
21:32:02
Друзья, у вас очень активный чат, может подскажите немного не по теме, где можно найти хорошего golang разработчика?

Serge
23.09.2016
21:32:35
SPbLUG: "Мечтают ли go-программы о балансере?" by Даниил Подольский 28/09/2016
https://telegram.me/spblug
Там, кстати, на ближайшей встрече будет про go

Google

Serge
23.09.2016
21:33:30
А ещё там есть пара человек, которые лучше ответят на твой оригинальный вопрос
Ну и ты поймёшь, что у нас чатик по теме и весьма тихий
В четверг пьём пиво. http://meetu.ps/e/BZj5S/5nHxd/d

Roman
23.09.2016
21:36:45
Пиво будет?

Serge
23.09.2016
21:37:17

Roman
23.09.2016
21:49:36
Спасибо!

Serge
23.09.2016
22:45:24
https://teespring.com/stores/spb-python-interest-group?from=tlgrm
Теперь еще один вид футболок и кружки


Zart
24.09.2016
05:26:57
Как из официальной документации питона можно понять, какое исключение может выбросить та или иная функция из stdlib?
Ну, вот например Popen.communicate из subprocess?
https://docs.python.org/3.6/library/subprocess.html#subprocess.Popen.communicate
Про исключения ни слова.
Пришёл тикет на ПО "100 летней давности", типа не работает вдруг. Всегда работало, а тут вдруг сломалось. Полез смотреть, а там исключение BrokenPipeError. О нём ни слова в доке по subprocess. То есть надо было догадаться, что если оно работает с пайпами, то это исключение может возбудиться. И ещё говорят, что дока питона прекрасна... да уж.
должно быть очевидно что обёртки вокруг системных функций могут вернуть сабклассы OSError
функции, осуществляющие ввод/вывод могут кинуть сабклассы IOError. поэтому обычно и юзают except (OSError, IOError) для покрытия самых вероятных сбоев...

Eugene
24.09.2016
05:43:09

Serge
24.09.2016
05:43:39

Eugene
24.09.2016
05:43:48
Неа

Google

Serge
24.09.2016
05:44:45
Вижу OSError.

Eugene
24.09.2016
05:45:08
ConnectionError, да, кстати

Serge
24.09.2016
05:45:37
Видно, что на винде OSError и WindowsError - одно и тоже

Eugene
24.09.2016
05:46:56
OSError = WindowsError
Вот так вижу, но это в коде.

Serge
24.09.2016
05:47:50
Интересно, что разная иерархия вверх от того же класса

Eugene
24.09.2016
05:47:53
Интересно, зачем так сделали?

Serge
24.09.2016
05:48:09

Eugene
24.09.2016
05:48:44
Я имею в виду, разные иерархии, зависимые от платформы.

Serge
24.09.2016
05:48:45
Каждая реализация называется по своему, на разных платформах используется своя

Eugene
24.09.2016
05:49:36
В Qt тоже разные реализации, но большая часть public API одинаковая

Serge
24.09.2016
05:49:52
OSError
Посмотри как модуль os реализован
Где это видно?
Видимо смотрелка иерархии питоновских классов эта ваша плохо смотрит на сюшный код

Eugene
24.09.2016
05:51:51
Кстати, с этим BrokenPipe в communicate всё как-то мутно. Ошибка происходит только под linux и только первый раз. Если повторно попытаться создать процесс, то communicate проходит, но ошибка попадает уже в stderr. Разбираюсь, что там происходит. Скорее всего мой косяк где-то не очень очивидный.

Serge
24.09.2016
05:52:32
Суббота 9 утра... Какой код... Зачем?:)

Eugene
24.09.2016
05:53:20
Ну, так получилось, у меня ненормированный рабочий график :) Особенности отсутствия офиса

Google

Zart
24.09.2016
05:54:50

Eugene
24.09.2016
05:55:27
In[2]: WindowsError.__base__
Out[2]:
Exception

Serge
24.09.2016
05:55:52

Zart
24.09.2016
05:55:56
это из двойки. а в тройке WindowsError стала альясом ОСЕррор
ваш аргумент инвалид
тройка:
>>> WindowsError is OSError
True
а альясом сделали именно потому чтоб уйти от "ошибка зависящая от платформы" 8)
линукс:
NameError: name 'WindowsError' is not defined

Eugene
24.09.2016
05:57:38

Zart
24.09.2016
05:57:46
есть конечно
но почему-то человек, который так сильно дрочит на исключения и их иерархии не читал https://www.python.org/dev/peps/pep-3151/

Eugene
24.09.2016
05:58:42
В дремучие времена они предлагали использовать на винде WindowsError и оно не было OSError? Если так, то печально.

Zart
24.09.2016
05:59:12
я только что привел выше тот факт, что раньше винеррор был сабклассом осеррор
потому что в отличие от осеррор содержало специфические коды ошибок от вин32
и обёртку вокруг FormatError емнимс

Eugene
24.09.2016
06:00:30
Читал скорее всего, но, как раз по причине того, что не слшкм то и сильно "дрочит", всё это ушло в глубины памяти :)

Zart
24.09.2016
06:01:06
тут таки не жаба с throws кейвордом
если в доку писать всё что может быть кинуто - придётся везде еще и SystemExit с KeyboardInterrupt'ом вписывать поди

Eugene
24.09.2016
06:02:17
А сейчас оно не содержит специфические коды ошибок? Или оно в errno всё?

Zart
24.09.2016
06:03:08
а сейчас настрогали дополнительные классы исключений и мапнули на них ошибки разных платформ

Google

Eugene
24.09.2016
06:03:10

Zart
24.09.2016
06:03:39
и вообще, не помешает посмотреть на https://docs.python.org/3/library/exceptions.html#exception-hierarchy
а потом на https://docs.python.org/2/library/exceptions.html#exception-hierarchy 8)

Eugene
24.09.2016
06:04:13
Блин, оно у меня в закладках оказалось...

Serge
24.09.2016
06:04:33

Admin
ERROR: S client not available

Zart
24.09.2016
06:05:00
по хорошему возможно надо
кто готов всю эту работу проделать?

Serge
24.09.2016
06:05:30

Eugene
24.09.2016
06:05:51
Или тысячи индусов с китайцами, они такую работу легко делают
В смысле, монотонную, но требующую внимательности.

Zart
24.09.2016
06:06:14
тут речь о том, чтобы проанализировать код всего стдлиба на предмет того что оно может кинуть и когда
потом еще прикинуть на каких платформах что может произойти
а доку к питону пишут всего десяток...

Eugene
24.09.2016
06:07:00
Ага и это должно быть очевидно "с первого раза". Ну если ты родился с клавиатурой в руках, а борода твоя до пупа, возможно. :)

Zart
24.09.2016
06:07:47
мм...
опыт наверное?

Eugene
24.09.2016
06:09:29
Именно, опыт. Но опыт и формируется в том числе при наступлении на грабли, да на свои, причём что бы там ни говорили про учение на чужих ошибках.
Кстати, мне тут статья понравилась. Может немного не по теме.
https://habrahabr.ru/post/310776/
Вот читал и прямо прослезился. Чел хотел, чтобы его научили писать крутой production код, а попал в индусский ад.

Zart
24.09.2016
06:17:58
человек познакомился с Реальным Продакшеном, который Хуяк-Хуяк

Serge
24.09.2016
07:02:04

Google

Zart
24.09.2016
07:06:34
https://hg.python.org/cpython/file/tip/Lib/test/test_subprocess.py#l638 8)

Serge
24.09.2016
07:08:13

Zart
24.09.2016
07:08:42
это ссылка на комментарий
да, они тестируют self.assertRaises

Serge
24.09.2016
07:08:53
А, да, сообразил

Zart
24.09.2016
07:09:08
но комментарий был о другом 8)

Andrey
24.09.2016
08:15:55
кажется во всей этой телеге про исключения народ грустит, что в питоне нет джавовской декларации throws
Вот только со всем питоновским динамизмом сделать его невозможно. Я могу в любой момент создать кастомный класс исключения прямо в риалтайме и бросить его

Zart
24.09.2016
08:18:58
исключения нынче обязаны наследоваться от baseexception. раньше можно было бросить что угодно 8)

Andrey
24.09.2016
08:21:27
так я и от него в риалтайме отнаследоваться могу
type('MyException', (BaseException,), {})

Zart
24.09.2016
08:22:47
да я в курсе

Danil
24.09.2016
08:59:35

Zart
24.09.2016
09:01:41
а разве не 4174?
4160 получают умножением 52 недель в году на 80
а 365.25 * 80 // 7 дает 4174

Serge
24.09.2016
09:02:21

Andrey
24.09.2016
09:04:50
Подозреваю, что полиморфизм доку может и убить. Отнаследумся от чего-то, что вызывается внутри, кинем там исключение и все

Eugene
24.09.2016
09:06:19

Danil
24.09.2016
09:06:44