
Tishka17
15.01.2019
05:34:55
Как всегда документацию никто не читает

Арсений
15.01.2019
05:37:06

Tishka17
15.01.2019
05:42:15
Эм

Google

Tishka17
15.01.2019
05:42:37
Вон же примеры как юзать stdin stdout
А в питоне так же как обычно

Sergey
15.01.2019
06:28:57
ребят а crud можно назвать restful api ?

Vasya
15.01.2019
06:32:46
Разрешаю, называй.

Sergey
15.01.2019
06:33:57

Vasya
15.01.2019
06:34:47
Зависит от реализации, а так это ваще разные сущности .

Terminator
15.01.2019
06:35:12
Andrw будет жить. Поприветствуем!

Tishka17
15.01.2019
06:37:51
Вообще никак не связано

Владимир
15.01.2019
06:46:35

Sergey
15.01.2019
06:49:04
ну значит можно называть это rest api

Vasya
15.01.2019
06:51:10
нельзя

Sergey
15.01.2019
06:51:30
почему

Google

Tishka17
15.01.2019
06:51:33
Круд - это "что?", Рест - это "как?"

Vasya
15.01.2019
06:52:52

Tishka17
15.01.2019
06:53:31
Пытаясь сделать круд, можно случайно получить рест

Artyem
15.01.2019
06:57:06

Tishka17
15.01.2019
07:00:56
Точно.
POST /api/v1/api - create REST API
GET /api/v1/api/id - get REST API declaration
...

Владимир
15.01.2019
07:01:55
Да это просто игра в термины. Хоть бараном назови. Главное, как оно крякает

Sergey
15.01.2019
07:03:08

Алишер
15.01.2019
07:06:24
Вопрос по телеграм боту на библиотеке telegram.
Как можно после нажатия инлайн кнопки, запустить цепочку диалога
def options(bot, update):
query = update.callback_query
chat_id = query.message.chat_id
option = str(query.data)
if option == "reading":
return BOOK
BOOK: [MessageHandler(Filters.text, askBook)] #хэндлер
def askExercise(bot, update): #функция
text = update.message.text
print(text)

Alexey
15.01.2019
07:14:07
crud это просто перечисления типовых операция над ресурсом
rest api это больше как подход который описывает как должны быть реализованы endpoint-ы, требования к их именованию передачи параметров, ответу и тд

Tishka17
15.01.2019
07:33:04
Пипл, у меня есть def func(data: Any) -> str какая ей Callable аннотация типа соответсвует? Если пишу Callable[[Any], str] то под нее подходит функция от инта и прочие. А мне надо только чтобы функция ждала Any

Егор
15.01.2019
07:33:54
Здравствуйте, посоветуйте ноутбук с бюджетом 1000 $ , чтобы автономно 2 часа сидеть в кафе

Maxim robox
15.01.2019
07:34:42

Andrew
15.01.2019
07:36:36

Tishka17
15.01.2019
07:36:52
Да чёт ни pycharm, ни mypy ни едят
Передаю функцию от Инта, не ругаются

Егор
15.01.2019
07:37:13
Любой.
б/у мак бук или новый любой ноут ?

Andrew
15.01.2019
07:38:02

Google

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:38:23

Tishka17
15.01.2019
07:38:26

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:38:31
Автономности часов 8 на изи
Ну там уже смотри по циклам аккумулятора при покупке

Tishka17
15.01.2019
07:38:53

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:39:03
Но можно аккумулятор-то поменять
Но у меня 15 года 7 часов свободно держит

Maxim robox
15.01.2019
07:39:34
А какой там у него рейтинг ремонтопригодности?

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:39:42
Попутно заряжая телефон

Maxim robox
15.01.2019
07:40:17

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:40:18
А так идёшь к официалам да чинишь

Andrew
15.01.2019
07:40:23

Tishka17
15.01.2019
07:40:25
Имхо проще взять новый не мак. Но я маки вообще не очень люблю

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:40:39
Есть только один ноутбук к сожалению
Остальное — хлам
(Еврокомы не в счёт)
Но там автономность не завезли
А с bootcamp макбук будет работать покруче surface

Google

ᵇʳᵒᵏᵉᵑ
15.01.2019
07:41:39
(Это лол на самом деле)

Tishka17
15.01.2019
07:42:44

Andrew
15.01.2019
07:44:18

Tishka17
15.01.2019
07:44:43
def view_(renderer: Callable[[Any], str]):
print(renderer({"key": "value"}))
грубо

Andrew
15.01.2019
07:44:54
так

Admin
ERROR: S client not available

Andrew
15.01.2019
07:45:40
согласно этой схеме renderer может быть любая функция, принимающая параметр любого типа. В общем то это правильное описание твоего случая. И использование int в качестве параметра не противоречит

LighteR
15.01.2019
07:46:41

Tishka17
15.01.2019
07:46:46
Но если я подставляют туда
def render_hundreds(data: int) -> str:
return f"{data//100} hundreds"
то не ругается

Andrew
15.01.2019
07:47:08
ну это правильное использование же

LighteR
15.01.2019
07:47:16

Andrew
15.01.2019
07:47:22
Кажется я вкурил

LighteR
15.01.2019
07:47:30
ты под Any что понимаешь?

Tishka17
15.01.2019
07:47:54

Andrew
15.01.2019
07:48:17
Требуется чтобы проверялись аннотации типов используемой функции на строгое совпадение

Tishka17
15.01.2019
07:48:27
да не

Andrew
15.01.2019
07:48:50
чтобы подходили только функции типа
func(data: Any) -> str, при этом
func(data: int) -> str не канает?

Tishka17
15.01.2019
07:48:51
чтобы функция обрабатывала параметры не уже чем требуется

Google

Tishka17
15.01.2019
07:49:20
функция func(data: Any) явно может быть использована вместо func(data: int). А наборот - нет

LighteR
15.01.2019
07:49:30
я, кажется, понял о чем ты

Tishka17
15.01.2019
07:51:00
то есть:
есть типы параметра, которые могут быть переданы. В случае а) - int, в случае б) - любые.
необходимо чтобы функция могла принимать параметр хотя бы такого типа. Функции, которые принимают только часть типов не катят
грубо. В а) всегда вызывается func(1)
В б) func(1) + func(“1”)

iddqd
15.01.2019
07:58:41

Tishka17
15.01.2019
07:58:53
оу
я понял, про CI ещё речь не шла

Maxim robox
15.01.2019
08:04:16

Andrew
15.01.2019
08:04:31

Tishka17
15.01.2019
08:04:32
удобнее - когда само =))

LighteR
15.01.2019
08:04:36

Maxim robox
15.01.2019
08:04:42

iddqd
15.01.2019
08:04:48

Andrew
15.01.2019
08:04:57

vsevolod
15.01.2019
08:07:35

LighteR
15.01.2019
08:12:16
@Tishka17
def f(cb: Callable[[object], str]) -> None:
pass
def int_repr(v: int) -> str:
return str(int)
def any_repr(v: Any) -> str:
return str(v)
f(any_repr) # mypy OK
f(int_repr) # error: Argument 1 to "f" has incompatible type "Callable[[int], str]"; expected "Callable[[object], str]"