
Ilya
22.06.2018
08:56:54
Кто нибудь работал с unittest библиотекой?
хотя не сильно важно
знает кто-нибудь, как сделать копию вывода результата скрипта?

Gryn
22.06.2018
08:58:39
я каналом ошибся, сорян

Aragaer
22.06.2018
08:59:10
что значит копию вывода результата?

Google

Ilya
22.06.2018
09:00:35
Ну при выполнении - выводится вся информация и все шаги print например
я сделал output результата в xml отчет, в итоге вся информация уходит в файл xml, а на экране пусто.
хочется и туда и туда

Aragaer
22.06.2018
09:00:53
tee
tail
полно ж вариантов

Ilya
22.06.2018
09:01:52
полно? ну я не вижу не одного, вот и спрашиваю
как можно tail использовать в данной ситуации?

Aragaer
22.06.2018
09:02:38
направляешь в файл, а tail -f на этот файл
ну а tee это более явно
./my-script.py | tee output.xml

Ilya
22.06.2018
09:04:18
Ну и будет выводится в xml формате, что впринципе не очень красиво и удобно

Aragaer
22.06.2018
09:05:14
а надо на экран в одном формате, а в файл в другом?

Ilya
22.06.2018
09:05:53
Ну да, чтоб при выполнении показывал обычным способом на экран и этот же текст сохранял в xml формате(использую xmlrunner)

Aragaer
22.06.2018
09:06:54
./my-script.py | tee >(./script-that-converts-to-xml.py > out.xml)
но уже да, начинаются многоэтажные паровозы

Google

Aragaer
22.06.2018
09:07:46
в этом смысле лучше просто tee в промежуточный файл с плейнтекстом, а потом уже отдельно запуск конвертера в xml

Oleksandr ror191505
22.06.2018
09:16:14
Имею вот такой вот код:
class A(object):
def a(self):
return 1
def b(self):
return 2
a = A()
print('id(a.a) == id(a.b) ' + str(id(a.a) == id(a.b)))
print('a.a is a.b ' + str(a.a is a.b))
Получаю вот такой вот выхлоп:
id(a.a) == id(a.b) True
a.a is a.b False
Python 2.7.15 и Python 3.6.5 показывают одинаковый результат

Mikhail
22.06.2018
09:16:28
https://docs.python.org/3/library/unittest.html
Сделать свой TestResult с сохранением в xml
https://docs.python.org/3/library/unittest.html#unittest.TestCase.run

Aragaer
22.06.2018
09:20:54
даже если бы возвращали одно и то же

Oleksandr ror191505
22.06.2018
09:21:34
Ну тут два вопроса:
почему id==id и is дают разные результаты
почему у разных методов один id

Mikhail
22.06.2018
09:22:12
>>> x = id(a.a)
>>> y = id(a.b)
>>> x == y
False
но при этом
>>> id(a.a) == id(a.b)
True

Aragaer
22.06.2018
09:22:37
а, не, тут вопрос, что такое id
потому что id(a.a) это какое-то число

Oleksandr ror191505
22.06.2018
09:23:12
id это https://docs.python.org/3/library/functions.html#id


Tigran
22.06.2018
09:23:13
Пишу глупо и волнуюсь, хочу критику и вообще любое предложение!
Вдохновляет python и его аналоги нейросетей. В особенности ассистенты и голосовые помощники. Только их ответы написаны заранее, это делает их отчасти бесполезными. Узнав о бихивиаризме и асоциативной системе, мне показалось, что возможно создать разумного бота. Бихивиаризм - изучает поведение животных с механистической стороны. Асоциативная система подразумевает, что поведение вызвано определёнными условиями и асоциами. Трудно об этом писать, ведь это означает, у Фреско есть несколько лекций на эту тему.
К примеру:
Медведь увидел человека и встаёт на задние лапы во весь рост, чтобы напугать, но это инторпритация человека. На деле медведь встаёт потому, что может и смотрит изменилось ли что-то.
Воли нет. Абсолютно все действия и решения вызваны окружающей средой, ее условиями и полученным ранее опытом. Воля это когда все решения принимаются подбрасывая монету. Мне нравится вкус яблок и я могу сказать, что люблю их и это мой выбор, хотя по большому счету за меня это решили мои сенсоры - вкусовые рецепторы, обоняние - т.е их прекрасный запах.
Чувствую совсем не умею излагать свои мысли, вообщем-то тут накидал схемку. У людей есть потребности, чувства, эмоции которые обычно генерируют поведение.
В моей инторпритации ии любое чувство - это шкала которая постоянно уменьшается и чем меньше она становится тем более радикальной становится ии, задача ии постоянно уталять жажду = восполнять шкалу любыми средствами. К примеру потребность общаться, присутствует система ввода-вывода и возможность отправлять текст. Оператор т.е учитель должны постоянно подкреплять определённые действия. Кнопка хорошо/плохо или же оценка ии оказывает влияние на шкалу=отнимет/добавит. Полученный опыт также должен сохраняться и группироваться. Если научить ии работать с тремя символами и их комбинациями, то возможно обучить всему. Конечно это глупо и у людей гораздо больше сенсоров связанных с окружающим миром, но обычной лексике и языку ее вполне возможно обучить до уровня д2 = 300 слов и грамматика. К примеру можно с помощью юнити можно поместить ии в виртуальную 3д комнату, добавить сенсоры в марианетку и знакомить с некоторыми объектами.
у человека своя инторпритация русского языка!


Ilya
22.06.2018
09:23:22

Oleksandr ror191505
22.06.2018
09:24:16

Tigran
22.06.2018
09:24:24

Aragaer
22.06.2018
09:24:33
This is an integer which is guaranteed to be unique and constant for this object during its lifetime.
почему у двух методов одного объекта id одинаковый?

Ksenia
22.06.2018
09:25:29
Всем привет!
есть вот такой код
class AdFilterRentCountryside(AdFilterRent, AdFilterCountryside):
def fill(self, **kwargs):
AdFilterRent().fill(**kwargs)
AdFilterCountryside().fill(**kwargs)
и он мне не очень нравится,
как читабельно вызвать функцию сначала первого родителя, потом второго?

Google

Aragaer
22.06.2018
09:26:57
ну только не совсем так, а через super

Tigran
22.06.2018
09:26:57
ну, если каждый из родителей в fill вызывает super().fill(), то достаточно и в потомке вызвать super().fill()

Mikhail
22.06.2018
09:27:25

Aragaer
22.06.2018
09:27:51
https://stackoverflow.com/questions/35173479/why-do-different-methods-of-same-object-have-the-same-id
вот

Yergali
22.06.2018
09:28:20
делаю http запрос перед тем переходить на страницу нужно загрузить сертификат(p12). сертификат есть внутри браузера. не могу загрузить в коде. никто не сталкивался с такими задачами?

Aragaer
22.06.2018
09:28:34
поэтому у a.a и a.b одинаковый id

Oleksandr ror191505
22.06.2018
09:29:20
Отключение GC не помогает

Aragaer
22.06.2018
09:29:46
а должно?
он сам внутри себя реюзает
# creates a reference to the method f
In [190]: f = a.f
# creates a reference to the method g
In [191]: g = a.g
# cannot reuse the memory location of f as it is still referenced
In [192]: id(f) == id(g)
Out[192]: False

Oleksandr ror191505
22.06.2018
09:30:13
а, понял

Tigran
22.06.2018
09:30:14
Подозреваю, что когда каунт ссылок доходит до нуля, объект без всякого GC высвобождается
или я неправ?

Aragaer
22.06.2018
09:30:44
it is just a cpython implementation detail and not something that you should ever rely on

Roman
22.06.2018
09:33:56

Aragaer
22.06.2018
09:35:03
или я неправ?
неправ. Потому что объект вполне может на кого-то ссылаться сам по себе и тогда там начнется всякое по цепочке

Ksenia
22.06.2018
09:37:21
Я все равно не поняла, знаю что такое супер, но как его тут применить, вот моя структура классов

Google

Ksenia
22.06.2018
09:37:26
все функции филл заполняют разные поля, и должны выполняться строго в определенном порядке

?
22.06.2018
09:39:24
async(i/o)

Denis
22.06.2018
09:41:32

Ksenia
22.06.2018
09:42:27
Это селениум тесты, заполнение полей фильтров, их нужно заполнить в определенном порядке, так что все ок с иерархией
:)

?
22.06.2018
09:42:32
Так можно же еще так, если нужен порядок
class foo (A, B):
Бля*

Aragaer
22.06.2018
09:42:54
я бы предложил подумать над тем, чтобы вышвырнуть наследование к чертовой бабушке

Tigran
22.06.2018
09:43:09

?
22.06.2018
09:43:20
Так можно же еще так, если нужен порядок
class foo (A, B):
def init(self):
super(A, self).__init__()
super(B, self).__init__()
И объявляешь их там, где нужно

Aragaer
22.06.2018
09:43:34
по-моему тут напрашивается паттерн composite

Tigran
22.06.2018
09:43:37

Aragaer
22.06.2018
09:43:42
и он реализуется не наследованием

?
22.06.2018
09:44:44
ну если без super, то только так A.__init__(self)

Roman
22.06.2018
09:46:34
#adcombo #cpa #ecommerce #python #web #backend #вакансия #работа
Город и адрес офиса: Москва, м.Нахимовский Проспект
Формат работы: Офис, пятидневка(один день удаленной работы)
Занятость: Полный день
Зарплатная вилка: от 130 000 до 170 000
Описание вакансии:
adcombo.com ищет в свою команду middle/senior python разработчика для разработки высоконагруженных систем.
От кандидата мы ждём:
Отличное знание Python и опыт разработки не менее 2х лет
Умение писать Unit тесты
Участие в разработке архитектуры новых узлов и улучшения старых
Умение писать код с использованием Flask, SQLAlchemy, Sanic
Название компании: AdCombo
Стек наших технологий: Python 2/3, SQLAlchemy, Flask, Sanic, PostgreSQL, ClickHouse, Redis, Docker, Jenkins, Gitlab, Prometheus, Jira
Более подробно - https://stackshare.io/adcombo/adcombo

Romuald
22.06.2018
09:47:02
% vs .format
Говорят, что % медленнее?
Что скажут эксперты

Denis
22.06.2018
09:47:21

Romuald
22.06.2018
09:47:46
def concat1():
z = x + y
return z
def concat2():
z = "%s%s" % (x, y)
return z
def concat3():
z = "{}{}".format(x, y)
return z
def concat4():
z = "{0}{1}".format(x, y)
return z

Google

Romuald
22.06.2018
09:47:55
concat1: 153 наносекунды;
concat2: 275 наносекунд;
concat3: 398 наносекунд;
concat4: 393 наносекунды.

Artyem
22.06.2018
09:49:10
f-строк нехватает

Alex
22.06.2018
09:50:37

Tigran
22.06.2018
09:53:50

Romuald
22.06.2018
09:54:02

Tigran
22.06.2018
09:54:49
f-строки супербыстрые
>>> setup = """
... def concat1(x, y):
... return x + y
...
... def concat2(x, y):
... return "%s%s" % (x, y)
...
... def concat3(x, y):
... return "{}{}".format(x, y)
...
... def concat4(x, y):
... return "{0}{1}".format(x, y)
...
... def concat5(x, y):
... return f"{x}{y}"
...
... def concat6(x, y):
... return "".join((x, y))
... """
>>>
>>> timeit.timeit("concat1('blah blah', ' whatever')", setup=setup)
0.14509744399401825
>>> timeit.timeit("concat2('blah blah', ' whatever')", setup=setup)
0.2572201400034828
>>> timeit.timeit("concat3('blah blah', ' whatever')", setup=setup)
0.36446600199269596
>>> timeit.timeit("concat4('blah blah', ' whatever')", setup=setup)
0.37769432200002484
>>> timeit.timeit("concat5('blah blah', ' whatever')", setup=setup)
0.15754133601149078
>>> timeit.timeit("concat6('blah blah', ' whatever')", setup=setup)
0.2305382449994795


Bogdan (SirEdvin)
22.06.2018
10:04:39

Romuald
22.06.2018
10:05:24

Tigran
22.06.2018
10:05:54

Bogdan (SirEdvin)
22.06.2018
10:06:19
Я бы выбрал, что удобнее. Но стоит учитывать, что при логгировании все равно будет использовать синтаксис из %, так как не форматировать строки чаще всего производительнее

Romuald
22.06.2018
10:06:27

Bogdan (SirEdvin)
22.06.2018
10:07:10
И потом вместо dict.get() использовать try: dict[] except KeyError :) Ну, только если количество срабатываний нужное.

Tigran
22.06.2018
10:07:43

Romuald
22.06.2018
10:07:44
тыкать везде try к беде