From 17f2a79ebd7f9687763dac643f59694413bced1d Mon Sep 17 00:00:00 2001 From: 24_ChernovaSS <24_ChernovaSS@iux.local> Date: Tue, 31 Mar 2026 22:40:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20Package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mypkg/models/package.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 mypkg/models/package.py diff --git a/mypkg/models/package.py b/mypkg/models/package.py new file mode 100644 index 0000000..cfd5261 --- /dev/null +++ b/mypkg/models/package.py @@ -0,0 +1,39 @@ +# mypkg/models/package.py +from dataclasses import dataclass, field +from typing import List, Dict +from datetime import datetime + + +# Автоматически создает конструктор __init__ и другие полезные методы. +@dataclass +class Package: + """Модель пакета - описывает, из чего состоит пакет""" + name: str # имя пакета + version: str # версия + description: str = "" # описание + maintainer: str = "" # кто поддерживает пакет + license: str = "" # лицензия + depends: List[str] = field(default_factory=list) # от чего зависит + conflicts: List[str] = field(default_factory=list) # с чем конфликтует + provides: List[str] = field(default_factory=list) # что предоставляет + files: List[Dict] = field(default_factory=list) # какие файлы устанавливает + checksum: str = "" # контрольная сумма для проверки целостности + installed: bool = False # установлен ли пакет сейчас + install_date: datetime = None # когда установили + + + # Возвращает имя с версией. + def full_name(self) -> str: + return f"{self.name}-{self.version}" + + # Превращает объект Package в словарь, который можно сохранить в JSON. + def to_dict(self) -> dict: + return { + 'name': self.name, + 'version': self.version, + 'description': self.description, + 'depends': self.depends, + 'conflicts': self.conflicts, + 'files': self.files, + 'install_date': self.install_date.isoformat() if self.install_date else None + } \ No newline at end of file