
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

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

Stanislav
03.10.2018
18:10:31

Алексей
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
Впредь писать нормально
Рефакторинг - это непрерывный процесс. Нельзя просто взять и написать нормально с первого раза ?

Алексей
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


spb_python_bot
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
pong


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

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


Serge
03.10.2018
21:10:27
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
на самом деле, в моем коде всё больнее, у меня Python 3.6 там:)


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

Google

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

Некто
04.10.2018
06:40:51
Ну те просто сказать это старый говнокод и надо переписать - будет ответ, что ты напишешь точно такое же легаси говно которое просто ты считаешь субъективно лучше, чтобы исключить субъектмвизацию пишутся профиты
И за счёт чего они
Часто новые фичи просто бессмысленно писать на старый код, тогда так и говорим что сначала надо какой-то кусок переписать, с обоснованием почему и что это даст и потом уже прикручиваем что-то новое
И за счёт чего они
Часто бывает что в ходе обсуждения человеку объясняют почему то что он хочет сделать будет ещё большим говнокодом, и такое бывает
И про тесты выше уже писали, это да - обязательно


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

Dmitry
04.10.2018
22:42:35
надо будет заценить

Alex
05.10.2018
04:32:05

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 никак не хочет и ошибок не возникает, просто данные вникуда улетают…
Временная таблица создаётся для сеанса конечно же.

Марат
05.10.2018
17:28:45

Alexey
05.10.2018
17:32:16

Ilia
05.10.2018
17:37:35


Alexey
05.10.2018
17:50:59

Ilia
05.10.2018
17:51:34

Alexey
05.10.2018
17:55:25

Ilia
05.10.2018
17:56:01

Alexey
05.10.2018
17:57:11

Ilia
05.10.2018
17:57:25

Alexey
05.10.2018
17:57:40

Ilia
05.10.2018
17:58:23

Alexey
05.10.2018
17:58:53

Ilia
05.10.2018
17:59:29

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

Google

Ilia
05.10.2018
18:00:37