
Максим
27.06.2019
10:34:10

Tishka17
27.06.2019
10:35:13
хм, судя по спеке TypeVar - фабрика, но не сказано что это класс
блин
то есть технически может быть реализация, где она в рантайме возвращает новые классы

Google

Tishka17
27.06.2019
10:35:48
или ещё что

Максим
27.06.2019
10:36:37
А
Лул
TypeVar[]
Пробуй

Artem
27.06.2019
10:37:01
class TypeVar(_Final, _Immutable, _root=True):
"""Type variable.
...
At runtime, isinstance(x, T) and issubclass(C, T) will raise TypeError.

Максим
27.06.2019
10:37:19
Там же в typing все через допу

Tishka17
27.06.2019
10:37:37

Artem
27.06.2019
10:37:47
и про сам класс

Tishka17
27.06.2019
10:37:48
а мне надо проверить что тип объявлен как TypeVar

Artem
27.06.2019
10:37:58
не прокатит) это ж только хинтинг

Tishka17
27.06.2019
10:38:03
да не, катит
этот пример про во ттакое
T = TypeVar("T")
isinstance(1, T)
issubclass(int, T)
в них логично что будет ошибка

Google

Tishka17
27.06.2019
10:39:03
а мне надо проверить что T - TypeVar

Максим
27.06.2019
10:39:21
Вообще python так устроен что при правильном использовании таких вопросов не должно возникнуть

Tynuk
27.06.2019
10:39:38
tynuk@Messita:~/Downloads/AT 1 1$ python3 main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import blob
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/__init__.py", line 1, in <module>
from .blob import Blob
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/blob.py", line 552, in <module>
from . import utils
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/utils.py", line 1, in <module>
from .pyecm import pyecm
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/pyecm/pyecm.py", line 237
T = (type(mpz(1)), type(1), type(1L))
^
SyntaxError: invalid syntax
в чем рофляха? там одна строчка кода где я импортирую блоб

Alex
27.06.2019
10:39:42

Tishka17
27.06.2019
10:40:02

Alex
27.06.2019
10:40:44
tynuk@Messita:~/Downloads/AT 1 1$ python3 main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import blob
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/__init__.py", line 1, in <module>
from .blob import Blob
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/blob.py", line 552, in <module>
from . import utils
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/utils.py", line 1, in <module>
from .pyecm import pyecm
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/pyecm/pyecm.py", line 237
T = (type(mpz(1)), type(1), type(1L))
^
SyntaxError: invalid syntax
в чем рофляха? там одна строчка кода где я импортирую блоб
а ты уверен что эта библиотека поддерживает твою версию питона?

Tishka17
27.06.2019
10:41:07
а что ты пытаешься сделать?
при сериализации женерика я я иногда не знаю конкретные типы его параметров, мне надо определить это и отложить определение типа до момента уже реальных данных


Alex
27.06.2019
10:42:36
tynuk@Messita:~/Downloads/AT 1 1$ python3 main.py
Traceback (most recent call last):
File "main.py", line 1, in <module>
import blob
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/__init__.py", line 1, in <module>
from .blob import Blob
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/blob.py", line 552, in <module>
from . import utils
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/utils.py", line 1, in <module>
from .pyecm import pyecm
File "/home/tynuk/.local/lib/python3.6/site-packages/blob/pyecm/pyecm.py", line 237
T = (type(mpz(1)), type(1), type(1L))
^
SyntaxError: invalid syntax
в чем рофляха? там одна строчка кода где я импортирую блоб
собственно long литералы в тройке выпилили

Tynuk
27.06.2019
10:42:54

Alex
27.06.2019
10:43:03

Tynuk
27.06.2019
10:43:34
а как я раньше тогда блоб использывал?

Alex
27.06.2019
10:44:16
видимо в двойке?

Tynuk
27.06.2019
10:44:19
нет

Alex
27.06.2019
10:44:25
что это вообще за либа и нахрен она нужна?

Tynuk
27.06.2019
10:44:26
никогда двойку не юзал
я же школьник

Alex
27.06.2019
10:44:30
вообще ошибка у тебя в pyecm

Tynuk
27.06.2019
10:44:34

Google

Alex
27.06.2019
10:44:52
шта?

Tynuk
27.06.2019
10:44:57
наверноре блоб не только это делает

Alex
27.06.2019
10:45:10
ты с glob не спутал?

Tynuk
27.06.2019
10:45:30
хекхехех
СЫПЫСЫ

Проксимов
27.06.2019
10:46:07
Так это встроенная либа

Alex
27.06.2019
10:46:08
рукалицожпг
судя по pypi blob это какое-то лелгаси говно без описания и ссылки на репо
школьникам надо бы знать что они качают из интернетов

Artem
27.06.2019
10:47:34
так что я неправильно делаю?
там по ходу такая штука:
Union = _SpecialForm('Union', doc=...
... - You cannot subclass or instantiate a union.
и эти парни юнионы с object не связаны, потому и ошибка приведения типов
а Type это Type = _alias(type, CT_co, inst=False)

Tishka17
27.06.2019
10:48:02

Artem
27.06.2019
10:48:29
это связывание через constraints

Tishka17
27.06.2019
10:48:29
а. в isinstance

Tynuk
27.06.2019
10:48:37

Artem
27.06.2019
10:48:38
у тебя ведь может быть или один тип, или второй
TypeVar хранит таплы возможних типов

Tishka17
27.06.2019
10:49:11
ну там в isinstance ожидает или type или что-то сложне
TypeVar - это type

Artem
27.06.2019
10:49:17
и это поля Union

Google

Anonymous
27.06.2019
10:49:46
всем привет

polunin.ai???
27.06.2019
10:49:47

Tishka17
27.06.2019
10:49:48

Anonymous
27.06.2019
10:50:36
нужна помощь по доработкам API
https://docs.google.com/spreadsheets/d/13SwQbYeIcidda2OhqqcNNd4O-NPmo4EhT6-MTGrxhS8/edit#gid=0

Michael
27.06.2019
10:54:01
подскажите пожалуйста, как обрезать строку с конца до первого попавшегося пробела?

Tishka17
27.06.2019
10:54:53
у тебя ведь может быть или один тип, или второй
окей. Давай попробую объяснить задачу.
Вот у меня еесть код:
T = TypeVar("T")
x: T
я через get_annotations() получаю что у x будет тип T. Как мне понять что T был объявлен как TypeVar, а не является реальным типом?

Michael
27.06.2019
10:58:51

Tishka17
27.06.2019
10:59:07

Michael
27.06.2019
11:00:39
а. .rsplit(" ", 1)
режет на две строки) а хочется сразу результат вторую) хотя можно тогда писать типа m[1] и будет нужный кусок)

Tishka17
27.06.2019
11:00:50
угу

Michael
27.06.2019
11:01:02

Tishka17
27.06.2019
11:05:05
Чёт мне не хочется писать в рассылку на python.org

LighteR
27.06.2019
11:09:35

Tishka17
27.06.2019
11:10:07
Грубо - если я понимаю, что дженерик не целиком спецификацирован, я откладываю разбор до получения данных
Наверно можно извернуться и оперировать только самим дженериком

Google

LighteR
27.06.2019
11:13:32
сейчас пришлю пример

Tishka17
27.06.2019
11:14:02
Попробую навкрно это не юзать, а взять __parameters__ и сравнить с __args__. Их там в 3.8 ещё не вынесли в апи?
Не вынесли :(

LighteR
27.06.2019
11:17:37
from typing import TypeVar, Generic
from typing_inspect import get_parameters
T = TypeVar('T')
class Foo(Generic[T]):
x: T
print(get_parameters(Foo)) # (~T,)
print(get_parameters(Foo[int])) # ()
чтобы явно не завязываться на непубличные свойства

Tishka17
27.06.2019
11:19:44
Что за typing_inspect?
Сторонняя либа?

LighteR
27.06.2019
11:20:08

Tishka17
27.06.2019
11:20:29
Хм. Ну я уже воспроизвел вроде целиком :)

LighteR
27.06.2019
11:20:50
я че-то забыл, что у тебя там сложности со сторонними либами :(

Anonymous
27.06.2019
11:20:57
нужен испольнитель есть кто на 1-2 дня ?

Tishka17
27.06.2019
11:22:06