Split the pkgmeta code into its own file
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
27
app/pkgmeta.py
Normal 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))
|
||||
Reference in New Issue
Block a user