Zhukova_Mariya

Start

Данный код реализует систему валидации данных для маркетплейса с использованием Pydantic v2. Модели обеспечивают строгую типизацию, валидацию бизнес-правил и автоматическую документацию.

UserSpec

Базовая модель пользователя маркетплейса.

Атрибуты: - user_id: Уникальный идентификатор пользователя (int) - username: Имя пользователя на русском языке (RussianStr) - surname: Фамилия пользователя на русском языке (RussianStr) - second_name: Отчество пользователя, опционально (RussianStr) - email: Email в валидном формате (EmailStr) - status: Статус пользователя - «active» или «non-active» (Literal)

Конфигурация: - Запрещены дополнительные поля (extra="forbid")

ProfileSpec

Расширенная модель профиля пользователя, наследуется от UserSpec.

Дополнительные атрибуты: - bio: Биография пользователя на русском языке (RussianStr) - url: URL страницы профиля в валидном формате (HttpUrl)

ItemSpec

Модель товара в маркетплейсе.

Атрибуты: - item_id: Уникальный идентификатор товара (int) - name: Название товара на русском языке (RussianStr) - desc: Описание товара на русском языке (RussianStr) - price: Цена товара, должна быть > 0 (float)

ServiceSpec

Модель услуги в маркетплейсе.

Атрибуты: - service_id: Уникальный идентификатор услуги (int) - name: Название услуги на русском языке (RussianStr) - desc: Описание услуги на русском языке (RussianStr) - price: Цена услуги, должна быть > 0 (float)

OrderLineSpec

Модель строки заказа, содержащей товар или услугу.

Атрибуты: - order_id: Идентификатор заказа (int) - order_line_id: Идентификатор строки заказа (int) - item_line: Товар или услуга (Union[ItemSpec, ServiceSpec]) - quantity: Количество, должно быть > 0 (float) - line_price: Стоимость строки, должна быть > 0 (float)

Валидатор: - check_line_price() - проверяет соответствие line_price произведению цены на количество

OrderSpec

Модель полного заказа.

Атрибуты: - order_id: Уникальный идентификатор заказа (int) - user_info: Информация о пользователе (ProfileSpec) - items_line: Список строк заказа (List[OrderLineSpec])

Валидатор: - check_unique_order_lines() - проверяет уникальность order_line_id в рамках заказа

OrdersSpec

Коллекция всех заказов маркетплейса.

Атрибуты: - market_place_orders: Список всех заказов (List[OrderSpec])

Валидатор: - check_global_uniques() - проверяет глобальную уникальность всех идентификаторов

Дополнительно

RussianStr

Аннотированный тип для русскоязычных строк:

RussianStr = Annotated[str, Field(pattern=r'^[А-Яа-яЁё\s\-]+$')]

Проверяет: - Только русские буквы (А-Я, а-я, Ёё) - Пробелы и дефисы - Запрещает латинские буквы, цифры, специальные символы

Функции

load_orders_from_yaml()

Загружает и валидирует заказы из YAML файла.

Параметры: - file_path: Путь к YAML файлу

Возвращает: - OrdersSpec: Валидированные данные заказов - None: В случае ошибки

Исключения: - FileNotFoundError: Если файл не найден - yaml.YAMLError: При ошибках парсинга YAML - ValidationError: При ошибках валидации Pydantic

Документация сгенерирована автоматически с использованием Sphinx и доступна в HTML формате.