добавила класс Package
This commit is contained in:
39
mypkg/models/package.py
Normal file
39
mypkg/models/package.py
Normal file
@@ -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
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user