Skip to content

Предложение: Добавить тайпинг для создаваемых клиентов SDK #146

@Wintreist

Description

@Wintreist

Привет!
Я заметил, что у вас в SDK при создании клиента, в 73 строке аннотацией типа stub_ctor указан Type и возвращается Any

У меня тайпинг указывает, что возвращаемый объект Any:
Image
И не предлагает подсказок по методам и полям класса
Разумеется это можно решить сделав так:

service: ServiceAccountServiceStub = s.client(ServiceAccountServiceStub)

Но я предлагаю небольшую модификацию:

from typing import TYPE_CHECKING, Any, Dict, Optional, Type, TypeVar, Union
...
Client = TypeVar("Client")
...
class SDK:
    def __init__(
    ...
    def client(
        self,
        stub_ctor: type[Client], # Указываем, что принимаем тип клиента
        interceptor: Union[
            grpc.UnaryUnaryClientInterceptor,
            grpc.UnaryStreamClientInterceptor,
            grpc.StreamUnaryClientInterceptor,
            grpc.StreamStreamClientInterceptor,
            None,
        ] = None,
        endpoint: Optional[str] = None,
        insecure: bool = False,
    ) -> Client: # Указываем, что возвращаем объект клиента
    ...

После этого для клиентов появляется тайпинг:
Image

Если для вас это не будет проблемой, то для меня это облегчит взаимодействие с SDK

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions