Skip to content
Snippets Groups Projects

feat: AUTO-4048 Add docstrings

1 unresolved thread
Merged Anton Teplyakov requested to merge feature/AUTO-4048 into master
1 unresolved thread
1 file
+ 44
0
Compare changes
  • Side-by-side
  • Inline
+ 44
0
 
"""
 
Этот модуль предоставляет класс для создания защищенного gRPC-соединения.
 
 
### Основные компоненты:
 
- [`GrpcChannel`](#GrpcChannel) — создание и управление защищенным gRPC-соединением.
 
- [`get_grpc_channel`](#get_grpc_channel) — фабричная функция для создания экземпляра [`GrpcChannel`](#GrpcChannel).
 
"""
 
import grpc
import grpc
from perxis.auth import APIKeyPlugin
from perxis.auth import APIKeyPlugin
class GrpcChannel:
class GrpcChannel:
 
"""Класс для создания защищенного gRPC-соединения.
 
 
Attributes:
 
call_credentials (grpc.CallCredentials): gRPC-учетные данные для вызова.
 
channel_credentials (grpc.ChannelCredentials): gRPC-учетные данные канала.
 
composite_credentials (grpc.ChannelCredentials): Комбинированные учетные данные.
 
channel (grpc.Channel | None): Активный gRPC-канал или None, если соединение не установлено.
 
"""
 
call_credentials: grpc.CallCredentials
call_credentials: grpc.CallCredentials
channel_credentials: grpc.ChannelCredentials
channel_credentials: grpc.ChannelCredentials
composite_credentials: grpc.ChannelCredentials
composite_credentials: grpc.ChannelCredentials
@@ -17,6 +34,15 @@ class GrpcChannel:
@@ -17,6 +34,15 @@ class GrpcChannel:
project_version: str,
project_version: str,
call_credentials_name: str = "api-key",
call_credentials_name: str = "api-key",
) -> None:
) -> None:
 
"""Создает новый экземпляр и устанавливает соединение.
 
 
Arguments:
 
target (str): Адрес gRPC-сервера.
 
metadata_plugin (grpc.AuthMetadataPlugin): Плагин аутентификации.
 
project_name (str): Название проекта.
 
project_version (str): Версия проекта.
 
call_credentials_name (str): Название плагина (по умолчанию "api-key").
 
"""
self.target = target
self.target = target
self.metadata_plugin = metadata_plugin
self.metadata_plugin = metadata_plugin
self.call_credentials_name = call_credentials_name
self.call_credentials_name = call_credentials_name
@@ -24,6 +50,7 @@ class GrpcChannel:
@@ -24,6 +50,7 @@ class GrpcChannel:
self.connect(project_name, project_version)
self.connect(project_name, project_version)
def _init_credentials(self) -> None:
def _init_credentials(self) -> None:
 
"""Инициализирует учетные данные для gRPC-соединения."""
self.call_credentials = grpc.metadata_call_credentials(
self.call_credentials = grpc.metadata_call_credentials(
self.metadata_plugin, name=self.call_credentials_name
self.metadata_plugin, name=self.call_credentials_name
)
)
@@ -33,6 +60,12 @@ class GrpcChannel:
@@ -33,6 +60,12 @@ class GrpcChannel:
)
)
def connect(self, project_name: str, project_version: str) -> None:
def connect(self, project_name: str, project_version: str) -> None:
 
"""Устанавливает защищенное соединение с gRPC-сервером.
 
 
Arguments:
 
project_name (str): Название проекта.
 
project_version (str): Версия проекта.
 
"""
if not self.channel:
if not self.channel:
self.channel = grpc.aio.secure_channel(
self.channel = grpc.aio.secure_channel(
self.target,
self.target,
@@ -43,12 +76,23 @@ class GrpcChannel:
@@ -43,12 +76,23 @@ class GrpcChannel:
)
)
async def close(self) -> None:
async def close(self) -> None:
 
"""Закрывает активное gRPC-соединение."""
await self.channel.close()
await self.channel.close()
def get_grpc_channel(
def get_grpc_channel(
Please register or sign in to reply
target: str, api_key: str, project_name: str, project_version: str
target: str, api_key: str, project_name: str, project_version: str
) -> GrpcChannel:
) -> GrpcChannel:
 
"""Создает и возвращает новый экземпляр [`GrpcChannel`](#GrpcChannel).
 
 
Arguments:
 
target (str): Адрес gRPC-сервера.
 
api_key (str): API-ключ для аутентификации.
 
project_name (str): Название проекта.
 
project_version (str): Версия проекта.
 
Returns:
 
GrpcChannel: Новый экземпляр [`GrpcChannel`](#GrpcChannel).
 
"""
return GrpcChannel(
return GrpcChannel(
target=target,
target=target,
metadata_plugin=APIKeyPlugin(token=api_key),
metadata_plugin=APIKeyPlugin(token=api_key),
Loading