Comments 9
Это не работает в Python 3.6.5 и выглядит не очень. Какие есть альтернативы?
До появления аннотаций — использовал rST-docstrings и абстрактные классы. В PyCharm (в т. ч. и CE) — они индексируются аналогично аннотациям. Вроде бы видел такое же поведение в Atom. Работает с модулями.
class _S3Client(abc.ABC):
@abc.abstractmethod
def create_bucket(self, Bucket):
"""
Creates bucket
:param Bucket: name
:type Bucket: str
:rtype object
"""
raise NotImplemented
client = boto3.client("s3") # type: _S3Client
# Тут и далее будут подсказки по _S3Client
+1
Вот в чем проблема с boto3.
class S3Client:
def Bucket(self, ...) -> Bucket: ...
class Bucket: ...
Тут метод клиента и класс называются абсолютно одинаково и такое в каждом первом клиенте. mypy справедливо считает что возвращаемый тип — это метод, а не класс. Я нашел решение с само-импортом модуля
import s3.client as self_scope # модуль импортирует сам себя
class S3Client:
def Bucket(self, ...) -> self_scope.Bucket: ...
class Bucket: ...
Так все работает, но ранит чувства.
0
Методы/переменные должны именоваться с алфавитного символа нижнего регистра. К сожалению Amazon не слишко следует pep-8.
У mypy — есть задокументированое решение для подобных ситуаций.
У mypy — есть задокументированое решение для подобных ситуаций.
+1
Было бы неплохо сделать аналогичный пакет для botocore. Наверное это должно быть не очень сложно, раз изначально всё генерируется из его данных.
0
Нет, для botocore стабы можно написать только руками. Это гораздо проще, но затратно по времени. Плюс, при обновлении botocore нужно будет проверять, не устарели ли стабы, в то время как для boto3 засчет генерации, обновление может быть полностью автоматизированно.
Но да, в 95% случаев, в новом релизе botocore меняются только JSON-файлы с описанием сервисов, так что стабы останутся без изменений.
0
Круто! Добавляйтесь в github.com/typeddjango/awesome-python-typing
0
Спасибо, отправил вам PR https://github.com/typeddjango/awesome-python-typing/pull/34
+1
Sign up to leave a comment.
Автодополнение кода и проверка типов для boto3