Torxed pydantic to dataclass (#935)
* Converted pydantic things to @dataclass definitions. * Added import for the dataclasses * flake8 fixes
This commit is contained in:
parent
37d6da7e4e
commit
389feef035
|
|
@ -14,7 +14,7 @@ from .lib.luks import *
|
||||||
from .lib.mirrors import *
|
from .lib.mirrors import *
|
||||||
from .lib.networking import *
|
from .lib.networking import *
|
||||||
from .lib.output import *
|
from .lib.output import *
|
||||||
from .lib.models import (
|
from .lib.models.dataclasses import (
|
||||||
VersionDef,
|
VersionDef,
|
||||||
PackageSearchResult,
|
PackageSearchResult,
|
||||||
PackageSearch,
|
PackageSearch,
|
||||||
|
|
|
||||||
|
|
@ -1,129 +0,0 @@
|
||||||
from typing import Optional, List
|
|
||||||
from pydantic import BaseModel, validator
|
|
||||||
|
|
||||||
class VersionDef(BaseModel):
|
|
||||||
version_string: str
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def parse_version(self) -> List[str]:
|
|
||||||
if '.' in self.version_string:
|
|
||||||
versions = self.version_string.split('.')
|
|
||||||
else:
|
|
||||||
versions = [self.version_string]
|
|
||||||
|
|
||||||
return versions
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def major(self) -> str:
|
|
||||||
return self.parse_version()[0]
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def minor(self) -> str:
|
|
||||||
versions = self.parse_version()
|
|
||||||
if len(versions) >= 2:
|
|
||||||
return versions[1]
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def patch(self) -> str:
|
|
||||||
versions = self.parse_version()
|
|
||||||
if '-' in versions[-1]:
|
|
||||||
_, patch_version = versions[-1].split('-', 1)
|
|
||||||
return patch_version
|
|
||||||
|
|
||||||
def __eq__(self, other :'VersionDef') -> bool:
|
|
||||||
if other.major == self.major and \
|
|
||||||
other.minor == self.minor and \
|
|
||||||
other.patch == self.patch:
|
|
||||||
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def __lt__(self, other :'VersionDef') -> bool:
|
|
||||||
if self.major > other.major:
|
|
||||||
return False
|
|
||||||
elif self.minor and other.minor and self.minor > other.minor:
|
|
||||||
return False
|
|
||||||
elif self.patch and other.patch and self.patch > other.patch:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
return self.version_string
|
|
||||||
|
|
||||||
|
|
||||||
class PackageSearchResult(BaseModel):
|
|
||||||
pkgname: str
|
|
||||||
pkgbase: str
|
|
||||||
repo: str
|
|
||||||
arch: str
|
|
||||||
pkgver: str
|
|
||||||
pkgrel: str
|
|
||||||
epoch: int
|
|
||||||
pkgdesc: str
|
|
||||||
url: str
|
|
||||||
filename: str
|
|
||||||
compressed_size: int
|
|
||||||
installed_size: int
|
|
||||||
build_date: str
|
|
||||||
last_update: str
|
|
||||||
flag_date: Optional[str]
|
|
||||||
maintainers: List[str]
|
|
||||||
packager: str
|
|
||||||
groups: List[str]
|
|
||||||
licenses: List[str]
|
|
||||||
conflicts: List[str]
|
|
||||||
provides: List[str]
|
|
||||||
replaces: List[str]
|
|
||||||
depends: List[str]
|
|
||||||
optdepends: List[str]
|
|
||||||
makedepends: List[str]
|
|
||||||
checkdepends: List[str]
|
|
||||||
|
|
||||||
@property
|
|
||||||
def pkg_version(self) -> str:
|
|
||||||
return self.pkgver
|
|
||||||
|
|
||||||
def __eq__(self, other :'VersionDef') -> bool:
|
|
||||||
return self.pkg_version == other.pkg_version
|
|
||||||
|
|
||||||
def __lt__(self, other :'VersionDef') -> bool:
|
|
||||||
return self.pkg_version < other.pkg_version
|
|
||||||
|
|
||||||
|
|
||||||
class PackageSearch(BaseModel):
|
|
||||||
version: int
|
|
||||||
limit: int
|
|
||||||
valid: bool
|
|
||||||
results: List[PackageSearchResult]
|
|
||||||
|
|
||||||
|
|
||||||
class LocalPackage(BaseModel):
|
|
||||||
name: str
|
|
||||||
version: str
|
|
||||||
description:str
|
|
||||||
architecture: str
|
|
||||||
url: str
|
|
||||||
licenses: str
|
|
||||||
groups: str
|
|
||||||
depends_on: str
|
|
||||||
optional_deps: str
|
|
||||||
required_by: str
|
|
||||||
optional_for: str
|
|
||||||
conflicts_with: str
|
|
||||||
replaces: str
|
|
||||||
installed_size: str
|
|
||||||
packager: str
|
|
||||||
build_date: str
|
|
||||||
install_date: str
|
|
||||||
install_reason: str
|
|
||||||
install_script: str
|
|
||||||
validated_by: str
|
|
||||||
|
|
||||||
@property
|
|
||||||
def pkg_version(self) -> str:
|
|
||||||
return self.version
|
|
||||||
|
|
||||||
def __eq__(self, other :'VersionDef') -> bool:
|
|
||||||
return self.pkg_version == other.pkg_version
|
|
||||||
|
|
||||||
def __lt__(self, other :'VersionDef') -> bool:
|
|
||||||
return self.pkg_version < other.pkg_version
|
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
from dataclasses import dataclass
|
||||||
|
from typing import Optional, List
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class VersionDef:
|
||||||
|
version_string: str
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse_version(self) -> List[str]:
|
||||||
|
if '.' in self.version_string:
|
||||||
|
versions = self.version_string.split('.')
|
||||||
|
else:
|
||||||
|
versions = [self.version_string]
|
||||||
|
|
||||||
|
return versions
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def major(self) -> str:
|
||||||
|
return self.parse_version()[0]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def minor(self) -> str:
|
||||||
|
versions = self.parse_version()
|
||||||
|
if len(versions) >= 2:
|
||||||
|
return versions[1]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def patch(self) -> str:
|
||||||
|
versions = self.parse_version()
|
||||||
|
if '-' in versions[-1]:
|
||||||
|
_, patch_version = versions[-1].split('-', 1)
|
||||||
|
return patch_version
|
||||||
|
|
||||||
|
def __eq__(self, other :'VersionDef') -> bool:
|
||||||
|
if other.major == self.major and \
|
||||||
|
other.minor == self.minor and \
|
||||||
|
other.patch == self.patch:
|
||||||
|
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __lt__(self, other :'VersionDef') -> bool:
|
||||||
|
if self.major > other.major:
|
||||||
|
return False
|
||||||
|
elif self.minor and other.minor and self.minor > other.minor:
|
||||||
|
return False
|
||||||
|
elif self.patch and other.patch and self.patch > other.patch:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return self.version_string
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class PackageSearchResult:
|
||||||
|
pkgname: str
|
||||||
|
pkgbase: str
|
||||||
|
repo: str
|
||||||
|
arch: str
|
||||||
|
pkgver: str
|
||||||
|
pkgrel: str
|
||||||
|
epoch: int
|
||||||
|
pkgdesc: str
|
||||||
|
url: str
|
||||||
|
filename: str
|
||||||
|
compressed_size: int
|
||||||
|
installed_size: int
|
||||||
|
build_date: str
|
||||||
|
last_update: str
|
||||||
|
flag_date: Optional[str]
|
||||||
|
maintainers: List[str]
|
||||||
|
packager: str
|
||||||
|
groups: List[str]
|
||||||
|
licenses: List[str]
|
||||||
|
conflicts: List[str]
|
||||||
|
provides: List[str]
|
||||||
|
replaces: List[str]
|
||||||
|
depends: List[str]
|
||||||
|
optdepends: List[str]
|
||||||
|
makedepends: List[str]
|
||||||
|
checkdepends: List[str]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pkg_version(self) -> str:
|
||||||
|
return self.pkgver
|
||||||
|
|
||||||
|
def __eq__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version == other.pkg_version
|
||||||
|
|
||||||
|
def __lt__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version < other.pkg_version
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class PackageSearch:
|
||||||
|
version: int
|
||||||
|
limit: int
|
||||||
|
valid: bool
|
||||||
|
num_pages: int
|
||||||
|
page: int
|
||||||
|
results: List[PackageSearchResult]
|
||||||
|
|
||||||
|
def __post_init__(self):
|
||||||
|
self.results = [PackageSearchResult(**x) for x in self.results]
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class LocalPackage:
|
||||||
|
name: str
|
||||||
|
version: str
|
||||||
|
description:str
|
||||||
|
architecture: str
|
||||||
|
url: str
|
||||||
|
licenses: str
|
||||||
|
groups: str
|
||||||
|
depends_on: str
|
||||||
|
optional_deps: str
|
||||||
|
required_by: str
|
||||||
|
optional_for: str
|
||||||
|
conflicts_with: str
|
||||||
|
replaces: str
|
||||||
|
installed_size: str
|
||||||
|
packager: str
|
||||||
|
build_date: str
|
||||||
|
install_date: str
|
||||||
|
install_reason: str
|
||||||
|
install_script: str
|
||||||
|
validated_by: str
|
||||||
|
provides: str
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pkg_version(self) -> str:
|
||||||
|
return self.version
|
||||||
|
|
||||||
|
def __eq__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version == other.pkg_version
|
||||||
|
|
||||||
|
def __lt__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version < other.pkg_version
|
||||||
|
|
@ -0,0 +1,134 @@
|
||||||
|
from typing import Optional, List
|
||||||
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
"""
|
||||||
|
This python file is not in use.
|
||||||
|
Pydantic is not a builtin, and we use the dataclasses.py instead!
|
||||||
|
"""
|
||||||
|
|
||||||
|
class VersionDef(BaseModel):
|
||||||
|
version_string: str
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def parse_version(self) -> List[str]:
|
||||||
|
if '.' in self.version_string:
|
||||||
|
versions = self.version_string.split('.')
|
||||||
|
else:
|
||||||
|
versions = [self.version_string]
|
||||||
|
|
||||||
|
return versions
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def major(self) -> str:
|
||||||
|
return self.parse_version()[0]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def minor(self) -> str:
|
||||||
|
versions = self.parse_version()
|
||||||
|
if len(versions) >= 2:
|
||||||
|
return versions[1]
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def patch(self) -> str:
|
||||||
|
versions = self.parse_version()
|
||||||
|
if '-' in versions[-1]:
|
||||||
|
_, patch_version = versions[-1].split('-', 1)
|
||||||
|
return patch_version
|
||||||
|
|
||||||
|
def __eq__(self, other :'VersionDef') -> bool:
|
||||||
|
if other.major == self.major and \
|
||||||
|
other.minor == self.minor and \
|
||||||
|
other.patch == self.patch:
|
||||||
|
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __lt__(self, other :'VersionDef') -> bool:
|
||||||
|
if self.major > other.major:
|
||||||
|
return False
|
||||||
|
elif self.minor and other.minor and self.minor > other.minor:
|
||||||
|
return False
|
||||||
|
elif self.patch and other.patch and self.patch > other.patch:
|
||||||
|
return False
|
||||||
|
|
||||||
|
def __str__(self) -> str:
|
||||||
|
return self.version_string
|
||||||
|
|
||||||
|
|
||||||
|
class PackageSearchResult(BaseModel):
|
||||||
|
pkgname: str
|
||||||
|
pkgbase: str
|
||||||
|
repo: str
|
||||||
|
arch: str
|
||||||
|
pkgver: str
|
||||||
|
pkgrel: str
|
||||||
|
epoch: int
|
||||||
|
pkgdesc: str
|
||||||
|
url: str
|
||||||
|
filename: str
|
||||||
|
compressed_size: int
|
||||||
|
installed_size: int
|
||||||
|
build_date: str
|
||||||
|
last_update: str
|
||||||
|
flag_date: Optional[str]
|
||||||
|
maintainers: List[str]
|
||||||
|
packager: str
|
||||||
|
groups: List[str]
|
||||||
|
licenses: List[str]
|
||||||
|
conflicts: List[str]
|
||||||
|
provides: List[str]
|
||||||
|
replaces: List[str]
|
||||||
|
depends: List[str]
|
||||||
|
optdepends: List[str]
|
||||||
|
makedepends: List[str]
|
||||||
|
checkdepends: List[str]
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pkg_version(self) -> str:
|
||||||
|
return self.pkgver
|
||||||
|
|
||||||
|
def __eq__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version == other.pkg_version
|
||||||
|
|
||||||
|
def __lt__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version < other.pkg_version
|
||||||
|
|
||||||
|
|
||||||
|
class PackageSearch(BaseModel):
|
||||||
|
version: int
|
||||||
|
limit: int
|
||||||
|
valid: bool
|
||||||
|
results: List[PackageSearchResult]
|
||||||
|
|
||||||
|
|
||||||
|
class LocalPackage(BaseModel):
|
||||||
|
name: str
|
||||||
|
version: str
|
||||||
|
description:str
|
||||||
|
architecture: str
|
||||||
|
url: str
|
||||||
|
licenses: str
|
||||||
|
groups: str
|
||||||
|
depends_on: str
|
||||||
|
optional_deps: str
|
||||||
|
required_by: str
|
||||||
|
optional_for: str
|
||||||
|
conflicts_with: str
|
||||||
|
replaces: str
|
||||||
|
installed_size: str
|
||||||
|
packager: str
|
||||||
|
build_date: str
|
||||||
|
install_date: str
|
||||||
|
install_reason: str
|
||||||
|
install_script: str
|
||||||
|
validated_by: str
|
||||||
|
|
||||||
|
@property
|
||||||
|
def pkg_version(self) -> str:
|
||||||
|
return self.version
|
||||||
|
|
||||||
|
def __eq__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version == other.pkg_version
|
||||||
|
|
||||||
|
def __lt__(self, other :'VersionDef') -> bool:
|
||||||
|
return self.pkg_version < other.pkg_version
|
||||||
|
|
@ -3,7 +3,7 @@ import urllib.request
|
||||||
import json
|
import json
|
||||||
from typing import Dict, Any
|
from typing import Dict, Any
|
||||||
from ..general import SysCommand
|
from ..general import SysCommand
|
||||||
from ..models import PackageSearch, PackageSearchResult, LocalPackage
|
from ..models.dataclasses import PackageSearch, PackageSearchResult, LocalPackage
|
||||||
from ..exceptions import PackageError, SysCallError, RequirementError
|
from ..exceptions import PackageError, SysCallError, RequirementError
|
||||||
|
|
||||||
BASE_URL_PKG_SEARCH = 'https://archlinux.org/packages/search/json/?name={package}'
|
BASE_URL_PKG_SEARCH = 'https://archlinux.org/packages/search/json/?name={package}'
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue