Size: a a a

2020 March 10

💭П

💭 Руслан Прохоров in rannts
А значит была предварительная версия :-)
источник

AM

Artem Malyshev in rannts
А, это да))
источник

💭П

💭 Руслан Прохоров in rannts
Значит будет, что посмотреть и послушать )
источник

💭П

💭 Руслан Прохоров in rannts
Вот тольк оан хабре не презентацию обсуждают, а вступление про китов )))))
источник

KK

Kirill (Cykooz) Kuzminykh in rannts
Байт Словович
Ну и когда вы логируете в эластик, уже нельзя писать логи в таком формате:
logbook.info("Something {} happended {} with {}", a, b, c)

обязательно надо менять на
logbook.info("Something {a} happended {b} with {c}", a, b, c)

Чтобы потом фильтровать не по вхождению в текст сообщения, а именно по полям.
В эластик я логирую исключительно в JSON и только в таком виде:

logger.info('Constant text', extra={'a': a, 'b': b, 'c': c})

Тогда от этого текста сообщения появляется польза - его можно искать в кибане по полному совпадению, а не выискивать отдельные подстроки, надеясь что они не совпадут с логами из совсем другого места.

"Человеческие логи" у меня прописаны только для логгера, который в stdout кидает - использую в консольных командах, которые надо ручками запускать.
источник
2020 March 11

RB

Roman Bolkhovitin in rannts
Ку! Олды тут? 😂 Я правильно понимаю, что пайлинту нельзя сказать ignored-classes=BaseClass, а надо перечислять все дочерние?
источник

💭П

💭 Руслан Прохоров in rannts
Исполняющий обязанности бота информирует:

@kirebas, у нас принято представляться и кратко рассказывать о себе с тэгом #whois.

Cпасибо за внимание!
источник

KS

Kirill Sizov in rannts
Я студент 3его курса бакалавриата по специальности "Прикладная математика и информатика", сейчас активно познаю python, наткнулся на этот канал и решил, что смогу найти для себя здесь много интересного)
#whois
источник

а

а кто это in rannts
политех или лобач?
источник

KS

Kirill Sizov in rannts
Лобач
источник

💭П

💭 Руслан Прохоров in rannts
from typing import Dict, List, NewType

TestName = NewType('TestName', str)
TestStep = NewType('TestStep', str)
TestResult = NewType('TestResult', str)
TestCase = Dict[TestName: Dict[TestStep: TestResult]]
TestCases = Dict[TestName: Dict[TestStep: List[TestResult]]]


def merge(first: TestCase, second: TestCase) -> TestCases:
источник

💭П

💭 Руслан Прохоров in rannts
Что я делаю не так?
источник

💭П

💭 Руслан Прохоров in rannts
нашёл
источник

AG

Alexander Gorokhov in rannts
Я вообще ниче не понял. А что надо было сделать? И в чем проблема была?
источник

💭П

💭 Руслан Прохоров in rannts
Alexander Gorokhov
Я вообще ниче не понял. А что надо было сделать? И в чем проблема была?
Не корректно отображались quick help
источник

💭П

💭 Руслан Прохоров in rannts
Просто я немного перемудрил, а потом всё исправил.
источник

💭П

💭 Руслан Прохоров in rannts
Вообще сначала было не привычно, а потом стало намного легче читать.
источник

💭П

💭 Руслан Прохоров in rannts
Вообще тема typing очень интересная :-)
источник

AI

Alexander I. in rannts
Да, питоном уже можно выстрелить себе в ногу и не только...
T = TypeVar('T')

def linear_contains(iterable: Iterable[T], key: T) -> bool:
   for item in iterable:
       if item == key:
           return True
   return False

C = TypeVar("C", bound="Comparable")

class Comparable(Protocol):
   def __eq__(self, other: Any) -> bool:
       ...

   def __lt__(self: C, other: C) -> bool:
       ...

   def __gt__(self: C, other: C) -> bool:
       return (not self < other) and self != other

   def __le__(self: C, other: C) -> bool:
       return self < other or self == other

   def __ge__(self: C, other: C) -> bool:
       return not self < other
источник

AI

Alexander I. in rannts
Не помню из какой книжки пример
источник