Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
3
Рефакторинг кода согласно принципам чистого кода и покрытие тестами
Условие задачи
Необходимо привести представленный фрагмент кода к требованиям чистого кода:
- Добавить недостающие аннотации типов.
- Оформить docstring для всех классов и их методов.
- Повысить читаемость (правильные отступы, при необходимости – более осмысленные имена переменных).
- При необходимости разбить код на отдельные модули.
- Реализовать юнит‑тесты, проверяющие ключевые части программы.
from collections.abc import Callable
from typing import Any, TypeVar, Concatenate, overload
from contextlib import asynccontextmanager
from dataclasses import dataclass
from functools import partial
from psycopg import AsyncConnection
from psycopg.types import TypeInfo
from certmanager.storages import sql
T = TypeVar('T')
P = TypeVar('P')
BaseActionT = Callable[Concatenate[AsyncConnection[Any], P], T]
@dataclass(slots=True)
class Action:
action_function: BaseActionT[T, P]
@overload
def __get__(self, client: None, *args: Any) -> 'Action[T, P]': ...
@overload
def __get__(self, client: AsyncConnection[Any], *args: Any) -> Callable[P, T]: ...
def __get__(self, client: AsyncConnection[Any] | None, *args: Any) -> Any:
if client is None:
return self
return partial(self.action_function, client.connection)
class PositiveValue:
def get(self) -> int:
"""Возвращает положительное целое значение."""
return 1 # пример значения
class MyClass:
def __init__(self) -> None:
self.number = PositiveValue()
obj = MyClass()
obj.number