Split the pkgmeta code into its own file

This commit is contained in:
Christoph Reiter
2023-07-22 17:43:47 +02:00
parent e5881a4d4c
commit b5a6db9025
3 changed files with 32 additions and 19 deletions

View File

@@ -12,12 +12,13 @@ from enum import Enum
from functools import cmp_to_key
from urllib.parse import quote_plus, quote
from typing import List, Set, Dict, Tuple, Optional, Type, Sequence, NamedTuple, Any
from pydantic import BaseModel, Field
from pydantic import BaseModel
from .appconfig import REPOSITORIES
from .utils import vercmp, version_is_newer_than, extract_upstream_version, split_depends, \
split_optdepends, strip_vcs
from .pgp import parse_signature
from .pkgmeta import PkgMeta, PkgMetaEntry
PackageKey = Tuple[str, str, str, str, str]
@@ -142,21 +143,6 @@ class Repository:
return sum(int(p.isize) for p in self.packages)
class PkgMetaEntry(BaseModel):
internal: bool = Field(default=False)
"""If the package is MSYS2 internal or just a meta package"""
references: Dict[str, Optional[str]] = Field(default_factory=dict)
"""References to third party repositories"""
class PkgMeta(BaseModel):
packages: Dict[str, PkgMetaEntry]
"""A mapping of pkgbase names to PkgMetaEntry"""
class BuildStatusBuild(BaseModel):
desc: Optional[str]
status: str

View File

@@ -10,7 +10,6 @@ import traceback
import hashlib
import functools
import gzip
import yaml
import datetime
from asyncio import Event
from urllib.parse import urlparse, quote_plus
@@ -21,8 +20,9 @@ import httpx
from aiolimiter import AsyncLimiter
import zstandard
from .appstate import state, Source, get_repositories, SrcInfoPackage, Package, DepType, Repository, BuildStatus, PkgMeta, \
from .appstate import state, Source, get_repositories, SrcInfoPackage, Package, DepType, Repository, BuildStatus, \
ExtInfo, ExtId
from .pkgmeta import PkgMeta, parse_yaml
from .appconfig import CYGWIN_METADATA_URL, REQUEST_TIMEOUT, AUR_METADATA_URL, ARCH_REPO_CONFIG, PKGMETA_URLS, \
SRCINFO_URLS, UPDATE_INTERVAL, BUILD_STATUS_URLS, UPDATE_MIN_RATE, UPDATE_MIN_INTERVAL, PYPI_URLS
from .utils import version_is_newer_than, arch_version_to_msys, extract_upstream_version
@@ -386,7 +386,7 @@ async def update_pkgmeta() -> None:
for url in urls:
print("Loading %r" % url)
data = await get_content_cached(url, timeout=REQUEST_TIMEOUT)
merged.packages.update(PkgMeta.parse_obj(yaml.safe_load(data)).packages)
merged.packages.update(parse_yaml(data).packages)
state.pkgmeta = merged
await update_pypi_versions(merged)

27
app/pkgmeta.py Normal file
View File

@@ -0,0 +1,27 @@
# Copyright 2023 Christoph Reiter
# SPDX-License-Identifier: MIT
import yaml
from pydantic import BaseModel, Field
from typing import Dict, Optional
class PkgMetaEntry(BaseModel):
internal: bool = Field(default=False)
"""If the package is MSYS2 internal or just a meta package"""
references: Dict[str, Optional[str]] = Field(default_factory=dict)
"""References to third party repositories"""
class PkgMeta(BaseModel):
packages: Dict[str, PkgMetaEntry]
"""A mapping of pkgbase names to PkgMetaEntry"""
def parse_yaml(data: bytes) -> PkgMeta:
"""Parse a YAML string into a PkgMeta object"""
return PkgMeta.model_validate(yaml.safe_load(data))