students_folder.savandr.lab_2 package
Submodules
students_folder.savandr.lab_2.lab_2 module
- class students_folder.savandr.lab_2.lab_2.ItemSpec(*, item_id: int, name: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], desc: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], price: float)[исходный код]
Базовые классы:
BaseModelМодель спецификации товара.
Атрибуты: - item_id (int): Идентификатор товара. - name (str): Название товара, состоящее из русских букв, пробелов, дефисов и цифр. - desc (str): Описание товара, состоящее из русских букв, пробелов, дефисов и цифр. - price (float): Цена товара, должна быть больше 0.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
Валидаторы: - validate_price: Проверяет, что цена товара больше 0. - name и desc должны состоять только из русских букв, пробелов, дефисов и цифр.
- Пример использования:
>>> item = ItemSpec( ... item_id=1, ... name='Товар 1', ... desc='Описание товара 1', ... price=100.0 ... ) >>> print(item) item_id=1 name='Товар 1' desc='Описание товара 1' price=100.0
- desc: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- item_id: int
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- name: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- price: float
- classmethod validate_price(value: float) float[исходный код]
- class students_folder.savandr.lab_2.lab_2.OrderLineSpec(*, order_id: int, order_line_id: int, item_line: ServiceSpec | ItemSpec, quantity: float)[исходный код]
Базовые классы:
BaseModelМодель строки заказа, которая содержит информацию о товаре или услуге в заказе.
Атрибуты: - order_id (int): Идентификатор заказа. - order_line_id (int): Идентификатор строки заказа, должен быть больше 0 и меньше или равен order_id. - item_line (Union[ServiceSpec, ItemSpec]): Товар или услуга, которая входит в строку заказа. - quantity (float): Количество товара или услуги в строке заказа, должно быть больше 0.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
Валидаторы: - validate_quantity: Проверяет, что количество больше 0. - validate_order_line_id: Проверяет, что order_line_id больше 0 и меньше или равен order_id. - line_price: Вычисляет цену строки заказа как произведение quantity и цены товара или услуги.
- Пример использования:
>>> item = ItemSpec(item_id=1, name='Товар 1', desc='Описание товара 1', price=100.0) >>> order_line = OrderLineSpec( ... order_id=1, ... order_line_id=1, ... item_line=item, ... quantity=2.0 ... ) >>> print(order_line) order_id=1 order_line_id=1 item_line=ItemSpec(item_id=1, name='Товар 1', desc='Описание товара 1', price=100.0) quantity=2.0 line_price=200.0
- item_line: ServiceSpec | ItemSpec
- property line_price: float
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- order_id: int
- order_line_id: int
- quantity: float
- validate_order_line_id()[исходный код]
- classmethod validate_quantity(value)[исходный код]
- class students_folder.savandr.lab_2.lab_2.OrderSpec(*, order_id: int, user_info: ProfileSpec, items_line: List[OrderLineSpec])[исходный код]
Базовые классы:
BaseModel» Модель заказа, которая содержит информацию о заказе пользователя.
Атрибуты: - order_id (int): Идентификатор заказа. - user_info (ProfileSpec): Профиль пользователя, который сделал заказ. - items_line (List[OrderLineSpec]): Список строк заказа, каждая из которых содержит информацию о товаре или услуге.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
Валидаторы: - validate_order_id: Проверяет, что order_id больше 0. - validate_items_line: Проверяет, что items_line не пустой и содержит только строки заказа с корректными order_id и order_line_id.
- Пример использования:
>>> user_profile = ProfileSpec( ... user_id=1, ... username='Андрей', ... surname='Савватеев', ... second_name='Эдуардович', ... email='andrey.savvateev@example.com', ... status='active', ... bio='Программист и разработчик', ... url='https://example.com/profile' ... ) >>> item = ItemSpec(item_id=1, name='Товар 1', desc='Описание товара 1', price=100.0) >>> order_line = OrderLineSpec( ... order_id=1, ... order_line_id=1, ... item_line=item, ... quantity=2.0 ... ) >>> order = OrderSpec( ... order_id=1, ... user_info=user_profile, ... items_line=[order_line] ... ) >>> print(order) order_id=1 user_info=ProfileSpec(user_id=1, username='Андрей', surname='Савватеев', second_name='Эдуардович', email='andrey.savvateev@example.com', status='active', bio='Программист и разработчик', url='https://example.com/profile') items_line=[OrderLineSpec(order_id=1, order_line_id=1, item_line=ItemSpec(item_id=1, name='Товар 1', desc='Описание товара 1', price=100.0), quantity=2.0)]
- items_line: List[OrderLineSpec]
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- order_id: int
- user_info: ProfileSpec
- class students_folder.savandr.lab_2.lab_2.OrdersSpec(*, market_place_orders: List[OrderSpec])[исходный код]
Базовые классы:
BaseModelМодель списка заказов, которая содержит информацию о заказах пользователей.
Атрибуты: - market_place_orders (List[OrderSpec]): Список заказов на маркетплейсе.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
- Пример использования:
>>> user_profile = ProfileSpec( ... user_id=1, ... username='Андрей', ... surname='Савватеев', ... second_name='Эдуардович', ... email='andrey.savvateev@example.com', ... status='active', ... bio='Программист и разработчик', ... url='https://example.com/profile' ... ) >>> item = ItemSpec(item_id=1, name='Товар 1', desc='Описание товара 1', price=100.0) >>> order_line = OrderLineSpec( ... order_id=1, ... order_line_id=1, ... item_line=item, ... quantity=2.0 ... ) >>> order = OrderSpec( ... order_id=1, ... user_info=user_profile, ... items_line=[order_line] ... ) >>> print(order) order_id=1 user_info=ProfileSpec(user_id=1, username='Андрей', surname='Савватеев', second_name='Эдуардович', email='andrey.savvateev@example.com', status='active', bio='Программист и разработчик', url='https://example.com/profile') items_line=[OrderLineSpec(order_id=1, order_line_id=1, item_line=ItemSpec(item_id=1, name='Товар 1', desc='Описание товара 1', price=100.0), quantity=2.0)]
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class students_folder.savandr.lab_2.lab_2.ProfileSpec(*, user_id: int, username: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], surname: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], second_name: str | None = None, email: str, status: Literal['active', 'non-active'], bio: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], url: HttpUrl)[исходный код]
Базовые классы:
UserSpecМодель профиля пользователя с дополнительными полями. Наследуется от UserSpec(user_id, username, surname, second_name, email, status) и добавляет поля bio и url.
Атрибуты: - bio (RussianStr): Краткая биография пользователя, состоящая из русских букв, пробелов, дефисов и цифр. - url (HttpUrl): URL пользователя, должен содержать „://“.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
Валидаторы: - validate_url: Проверяет, что URL содержит „://“. - validate_bio: Проверяет, что биография состоит только из русских букв, пробелов, дефисов и цифр.
- Пример использования:
>>> profile = ProfileSpec( ... user_id=1, ... username='Андрей', ... surname='Савватеев', ... second_name='Эдуардович', ... email='deez@nu.ts', ... status='active', ... bio='Программист и разработчик', ... url='https://example.com/profile' ... ) >>> print(profile) user_id=1 username='Андрей' surname='Савватеев' second_name='Эдуардович' email='deez@nu.ts' status='active' bio='Программист и разработчик' url='https://example.com/profile'
- bio: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- url: HttpUrl
- classmethod validate_url(value)[исходный код]
- class students_folder.savandr.lab_2.lab_2.ServiceSpec(*, service_id: int, name: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], desc: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], price: float)[исходный код]
Базовые классы:
BaseModelМодель услуги, которую предоставляет магазин.
Атрибуты: - service_id (int): Идентификатор услуги. - name (str): Название услуги, состоящее из русских букв, пробелов, дефисов и цифр. - desc (str): Описание услуги, состоящее из русских букв, пробелов, дефисов и цифр. - price (float): Цена услуги, должна быть больше 0.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
Валидаторы: - validate_price: Проверяет, что цена услуги больше 0. - name и desc должны состоять только из русских букв, пробелов, дефисов и цифр.
- Пример использования:
>>> service = ServiceSpec( ... service_id=1, ... name='Услуга 1', ... desc='Описание услуги 1', ... price=100.0 ... ) >>> print(service) service_id=1 name='Услуга 1' desc='Описание услуги 1' price=100.0
- desc: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- name: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- price: float
- service_id: int
- classmethod validate_price(value)[исходный код]
- class students_folder.savandr.lab_2.lab_2.UserSpec(*, user_id: int, username: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], surname: Annotated[str, _PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')], second_name: str | None = None, email: str, status: Literal['active', 'non-active'])[исходный код]
Базовые классы:
BaseModelМодель профиля пользователя.
Атрибуты: - user_id (int): Идентификатор пользователя. - username (str): Имя пользователя, состоящее из русских букв, пробелов, дефисов и цифр. - surname (str): Фамилия пользователя, состоящая из русских букв, пробелов, дефисов и цифр. - second_name (str, optional): Отчество пользователя, опционально. - email (str): Электронная почта пользователя, должна содержать „@“ и „.“. - status (Literal[„active“, „non-active“]): Статус пользователя, может быть „active“ или „non-active“.
Конфигурация модели: - extra=“forbid“: Запрещает наличие дополнительных полей, не указанных в модели.
Валидаторы: - validate_email: Проверяет, что email содержит символы „@“ и „.“. - username и surname должны состоять только из русских букв, пробелов, дефисов и цифр. - second_name может быть None, если не указано. - status должен быть либо „active“, либо „non-active“.
- Пример использования:
>>> user = UserSpec( ... user_id=1, ... username='Андрей', ... surname='Савватеев', ... second_name='Эдуардович', ... email='deez@nu.ts', ... status='active' ... ) >>> print(user) user_id=1 username='Андрей' surname='Савватеев' second_name='Эдуардович' email='deez@nu.ts' status='active'
- email: str
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- second_name: str | None
- status: Literal['active', 'non-active']
- surname: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- user_id: int
- username: Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[_PydanticGeneralMetadata(pattern='^[А-Яа-яЁё\\s\\-0-9]+$')])]
- classmethod validate_email(value)[исходный код]