@spbpython

Страница 777 из 785
Stepan
02.10.2018
13:05:00
я прежде чем спросить - по традиции упорно гуглил

но че то не вышло, много чего исправил уже, вот это не исправляется че то

Некто
02.10.2018
13:08:24
))

Stepan
02.10.2018
13:08:58
это реакция на мой примитивный вопрос?

Google
Sergey
02.10.2018
13:17:07
это реакция на мой примитивный вопрос?
там случаем не предполагается --pythonpath ./src? или --pythonpath /home/ubuntu/image-processor/src

Stepan
02.10.2018
13:18:23
первое не работало, второе сейчас попробую (я не прописал ubuntu, писал сразу /home/improc/

не, @skovorodkin воз и ныне там

собственно, в src лежит файл wsgi.py, в нем идет ` from dev.controller import app if name == "main": app.run()

Поменял pythonpath на chdir - заработало

Roman
03.10.2018
18:08:10
а как вы боретесь с говнокодом в проекте? )

как с новым, так и со старым?

втыкаете линтеры в хуки гита?

Марат
03.10.2018
18:09:40
Алексей
03.10.2018
18:13:04
а как вы боретесь с говнокодом в проекте? )
Если нельзя победить - необходимо возглавить!

Ой нет, это не то...

Roman
03.10.2018
18:13:15
Код ревью?
Это есть. Тут скорее вопрос что делать с тем что есть и чем искать.

Google
Andrey
03.10.2018
18:14:28
Roman
03.10.2018
18:34:25
Andrey
03.10.2018
18:36:33
у нас pycodestyle используется. почему именно он не знаю. и часть ошибок замьючены

Stepan
03.10.2018
19:09:30
Нуу, а что ты сделаешь со старым говнокодом? Если проект живой, и ты будешь менять старые куски, придётся много тестить, если кускам лет 8,тестить придётся дохера Поэтому выбирается не трогать

Впредь писать нормально

Eugene
03.10.2018
19:25:35
Нуу, а что ты сделаешь со старым говнокодом? Если проект живой, и ты будешь менять старые куски, придётся много тестить, если кускам лет 8,тестить придётся дохера Поэтому выбирается не трогать
старый говнокод надо рефакторить если планируется его поддерживать и развивать. Так ещё Фаулер завещал. А если там нет тестов, то сначала написать тесты, а потом рефакторить. Если старый говнокод трогать не планируется, то наверное фиг с ним :)

Впредь писать нормально
Рефакторинг - это непрерывный процесс. Нельзя просто взять и написать нормально с первого раза ?

Алексей
03.10.2018
19:29:46
Serge
03.10.2018
20:54:06
Huh… Just got a case in the real code for PEP 563 -- Postponed Evaluation of Annotations Say, you have a class like this (I've used attrs instead of dataclass in my code actually)… from dataclasses import dataclass @dataclass class A: foo: int = 0 And you would like to define a method which generates a list of such a structure instances basing on some other parameter like so… import typing from dataclasses import dataclass @dataclass class A: foo: int = 0 @classmethod def generate(cls, seq: typing.Iterable[int]) -> typing.Iterator[A]: return (cls(foo=x) for x in seq) In this case, you'll get something like this Traceback (most recent call last): File "a.py", line 5, in <module> @dataclass File "a.py", line 10, in A def generate(cls, seq: typing.Iterable[int]) -> typing.Iterator[A]: NameError: name 'A' is not defined So, this code requires postponed evaluation of the annotation from __future__ import annotations import typing from dataclasses import dataclass @dataclass class A: foo: int = 0 @classmethod def generate(cls, seq: typing.Iterable[int]) -> typing.Iterator[A]: return (cls(foo=x) for x in seq) Now it works. #python #PEP563

Dmitry
03.10.2018
20:57:57
pong
это он на tyрing сработал)

Maxim
03.10.2018
20:59:28
какой умный бот)

@lig11 а будет это работать правильно, если я вызову generate на сабклассе A? отвлечемся от датаклассов

я пытался делать что-то типа @classmethod def foo(cls: 'T') -> typing.List['T']: ...

но были какие-то проблемы, уже не помню

Serge
03.10.2018
21:09:37
@lig11 а будет это работать правильно, если я вызову generate на сабклассе A? отвлечемся от датаклассов
а чему там неправильно работать? оно будет продолжать декларировать, что ты хочешь возвращать, инстанс A или его наследника.

Maxim
03.10.2018
21:10:07
Где оно декларирует, что возвращает инстанс "или наследника"?

Serge
03.10.2018
21:10:27
Где оно декларирует, что возвращает инстанс "или наследника"?
эээ... там. потому что вот def foo() -> int: return True def bar() -> str: return False и $ mypy a.py a.py:5: error: Incompatible return value type (got "bool", expected "str")

Maxim
03.10.2018
21:14:25
Интересно

Google
Maxim
03.10.2018
21:14:29
Буду знать

Некто
04.10.2018
06:40:51
втыкаете линтеры в хуки гита?
У нас да, тоже есть flake8

Это есть. Тут скорее вопрос что делать с тем что есть и чем искать.
Когда натыкаемся и знаем как сделать лучше - создаём таску с обоснованием что переписать, зачем и какой это даст профит

Ну те просто сказать это старый говнокод и надо переписать - будет ответ, что ты напишешь точно такое же легаси говно которое просто ты считаешь субъективно лучше, чтобы исключить субъектмвизацию пишутся профиты

И за счёт чего они

Часто новые фичи просто бессмысленно писать на старый код, тогда так и говорим что сначала надо какой-то кусок переписать, с обоснованием почему и что это даст и потом уже прикручиваем что-то новое

И за счёт чего они
Часто бывает что в ходе обсуждения человеку объясняют почему то что он хочет сделать будет ещё большим говнокодом, и такое бывает

И про тесты выше уже писали, это да - обязательно

Vitali K.
04.10.2018
22:39:21
На последнем ЧГК был вопрос по цитате Бьёрна Страуструпа про языки программирования ?

Andrei
05.10.2018
04:36:07
Чгк это что ? :)
Что? Где? Когда?

Alex
05.10.2018
04:36:37
Оно еще живо ? О_o

Andrei
05.10.2018
04:41:29
Конечно

Admin
ERROR: S client not available

D_Firsov
05.10.2018
05:32:02
Более чем

Vitali K.
05.10.2018
05:34:53
Только смотрю я теперь его на ютубе))

Dmitriy
05.10.2018
06:59:59
Как знатоки? Справились?

Vitali K.
05.10.2018
07:08:41
неа

Google
Alexey
05.10.2018
08:28:36
Котаны, всем привет! Сталкивался ли кто с проблемой балк инсерта в temporary таблицу в cx_Oracle через executemany()? Бьюсь уже неделю - в обычную таблицу инсертит, в temporary никак не хочет и ошибок не возникает, просто данные вникуда улетают… Временная таблица создаётся для сеанса конечно же.

Alexey
05.10.2018
17:32:16
Alexey
05.10.2018
17:55:25
Дай DDL временной таблицы
CREATE GLOBAL TEMPORARY TABLE TB_NAME (тут поля, не буду перечислять) ON COMMIT PRESERVE ROWS;

Ilia
05.10.2018
17:56:01
CREATE GLOBAL TEMPORARY TABLE TB_NAME (тут поля, не буду перечислять) ON COMMIT PRESERVE ROWS;
ОК, как и когда завершаешь сенс и как проверяешь, что данные там есть?

Alexey
05.10.2018
17:57:11
ОК, как и когда завершаешь сенс и как проверяешь, что данные там есть?
После инсерта коммичу и в этом же сеансе, но в новом курсоре селект

Ilia
05.10.2018
17:57:25
Аналогичное читал на сайте Оракла
Короче, ты понял, что по окончании сеанса (т.е. при дисконнекте от БД) все твои данные удалятся из таблицы? Это тебя устраивает?

Ilia
05.10.2018
17:58:23
После инсерта коммичу и в этом же сеансе, но в новом курсоре селект
ОК, а чего-то типа пула коннектов нет там у тебя?

Ilia
05.10.2018
17:59:29
Не, пула нет
Нет, или ТОЧНО НЕТ?

Alexey
05.10.2018
17:59:36
Я уж думал бага cx_Oracle, пытался копаться в её сорцах, но осилил мало, так как на Си сто лет не писал ?

Google

Страница 777 из 785