api: add StrEnum types for method parameters

parent e28c926f
...@@ -24,12 +24,13 @@ pip3 install altrepo ...@@ -24,12 +24,13 @@ pip3 install altrepo
```python ```python
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
result = await client.api.package.package_info("vim", branch="sisyphus") result = await client.api.package.package_info("firefox", branch=Branch.sisyphus)
pkg = result.packages[0] pkg = result.packages[0]
print(f"{pkg.name} {pkg.version}-{pkg.release}") print(f"{pkg.name} {pkg.version}-{pkg.release}")
...@@ -45,15 +46,17 @@ asyncio.run(main()) ...@@ -45,15 +46,17 @@ asyncio.run(main())
Получение подробной информации о пакете и поиск по имени: Получение подробной информации о пакете и поиск по имени:
```python ```python
from altrepo.api.types import Branch
# Информация о конкретном пакете # Информация о конкретном пакете
result = await client.api.package.package_info("firefox", branch="sisyphus") result = await client.api.package.package_info("firefox", branch=Branch.sisyphus)
pkg = result.packages[0] pkg = result.packages[0]
print(f"{pkg.name} {pkg.version}-{pkg.release} ({pkg.summary})") print(f"{pkg.name} {pkg.version}-{pkg.release} ({pkg.summary})")
# Поиск пакетов по подстроке в имени # Поиск пакетов по подстроке в имени
result = await client.api.package.package_search("python3-module", branch="sisyphus") found = await client.api.site.find_packages("python3-module-alt", branch=Branch.sisyphus)
for pkg in result.packages[:10]: for pkg in found.packages[:10]:
print(f" {pkg.name}: {pkg.summary}") print(f" {pkg.name}")
``` ```
### Задачи и мейнтейнеры ### Задачи и мейнтейнеры
...@@ -61,18 +64,20 @@ for pkg in result.packages[:10]: ...@@ -61,18 +64,20 @@ for pkg in result.packages[:10]:
Поиск задач по мейнтейнеру или по имени пакета: Поиск задач по мейнтейнеру или по имени пакета:
```python ```python
from altrepo.api.types import Branch
# Задачи мейнтейнера # Задачи мейнтейнера
result = await client.api.task.find_tasks( result = await client.api.task.progress.find_tasks(
input=["fiersik"], branch="sisyphus", by_package=False input=["fiersik"], branch=Branch.sisyphus, by_package=False
) )
for task in result.tasks[:5]: for task in result.tasks[:5]:
print(f" #{task.task_id} [{task.state}] {task.owner}") print(f" #{task.task_id} [{task.task_state}] {task.task_owner}")
# Баги мейнтейнера из Bugzilla # Баги мейнтейнера из Bugzilla
bugs = await client.api.bug.bugzilla_by_maintainer("fiersik") bugs = await client.api.bug.bugzilla_by_maintainer("fiersik")
if bugs: if bugs:
for bug in bugs.bugs[:5]: for bug in bugs.bugs[:5]:
print(f" #{bug.bug_id} {bug.status}: {bug.summary}") print(f" #{bug.id} {bug.status}: {bug.summary}")
``` ```
### Отслеживание устаревших пакетов ### Отслеживание устаревших пакетов
...@@ -85,8 +90,7 @@ watch = await client.parser.packages.watch_by_maintainer("fiersik", "by-acl") ...@@ -85,8 +90,7 @@ watch = await client.parser.packages.watch_by_maintainer("fiersik", "by-acl")
for pkg in watch[:5]: for pkg in watch[:5]:
print(f" {pkg.pkg_name}: {pkg.old_version} -> {pkg.new_version}") print(f" {pkg.pkg_name}: {pkg.old_version} -> {pkg.new_version}")
# Полный список устаревших пакетов по всему репозиторию # Полный список устаревших пакетов
# Каждая запись содержит имя мейнтейнера (или группы с префиксом @)
total = await client.parser.packages.watch_total() total = await client.parser.packages.watch_total()
print(f"Всего устаревших пакетов: {len(total)}") print(f"Всего устаревших пакетов: {len(total)}")
``` ```
...@@ -160,7 +164,6 @@ for pkg in ftbfs[:5]: ...@@ -160,7 +164,6 @@ for pkg in ftbfs[:5]:
from altrepo import ALTRepo, ALTRepoConfig from altrepo import ALTRepo, ALTRepoConfig
config = ALTRepoConfig( config = ALTRepoConfig(
api_base_url="https://rdb.altlinux.org/api",
appstream_dir="/tmp/appstream", appstream_dir="/tmp/appstream",
appstream_branches=["sisyphus", "p11", "p10"], appstream_branches=["sisyphus", "p11", "p10"],
) )
......
from enum import StrEnum
class Acl(StrEnum):
none = "none"
by_nick = "by_nick"
by_nick_leader = "by_nick_leader"
by_nick_or_group = "by_nick_or_group"
by_nick_leader_and_group = "by_nick_leader_and_group"
class PackageType(StrEnum):
source = "source"
binary = "binary"
class PackageTypeAll(StrEnum):
all = "all"
source = "source"
binary = "binary"
class DependencyType(StrEnum):
both = "both"
source = "source"
binary = "binary"
class DependencyKind(StrEnum):
all = "all"
provide = "provide"
require = "require"
conflict = "conflict"
obsolete = "obsolete"
class ErrataState(StrEnum):
all = "all"
active = "active"
discarded = "discarded"
class ErrataType(StrEnum):
packages = "packages"
repository = "repository"
bug = "bug"
vuln = "vuln"
exclusion = "exclusion"
class ApprovalGroup(StrEnum):
maint = "maint"
tester = "tester"
class AuthProvider(StrEnum):
ldap = "ldap"
keycloak = "keycloak"
class ImageShow(StrEnum):
active = "active"
all = "all"
class Branch(StrEnum):
sisyphus = "sisyphus"
sisyphus_e2k = "sisyphus_e2k"
sisyphus_riscv64 = "sisyphus_riscv64"
sisyphus_loongarch64 = "sisyphus_loongarch64"
p11 = "p11"
p10 = "p10"
p10_e2k = "p10_e2k"
p9 = "p9"
c10f2 = "c10f2"
c9f2 = "c9f2"
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
acl = await client.api.acl.by_packages("sisyphus", ["firefox", "openssh"]) acl = await client.api.acl.by_packages(Branch.sisyphus, ["firefox", "openssh"])
print("ACL пакетов:") print("ACL пакетов:")
for pkg in acl.packages: for pkg in acl.packages:
print(f" {pkg.name}: {', '.join(pkg.members) or '(группа)'}") print(f" {pkg.name}: {', '.join(pkg.members) or '(группа)'}")
......
...@@ -2,21 +2,20 @@ ...@@ -2,21 +2,20 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
# Информация о пакете result = await client.api.package.package_info("firefox", branch=Branch.sisyphus)
result = await client.api.package.package_info("firefox", branch="sisyphus")
pkg = result.packages[0] pkg = result.packages[0]
print(f"{pkg.name} {pkg.version}-{pkg.release} (arch={pkg.arch})") print(f"{pkg.name} {pkg.version}-{pkg.release} (arch={pkg.arch})")
print(f" Мейнтейнер: {pkg.packager}") print(f" Мейнтейнер: {pkg.packager}")
print(f" SHA1: {pkg.sha1}") print(f" SHA1: {pkg.sha1}")
# Поиск пакетов в ветке found = await client.api.site.find_packages("python3-module-alt", branch=Branch.sisyphus)
found = await client.api.site.find_packages("python3-module-alt", branch="sisyphus")
for p in found.packages[:5]: for p in found.packages[:5]:
print(f" {p.name}") print(f" {p.name}")
......
...@@ -2,20 +2,19 @@ ...@@ -2,20 +2,19 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
# Поиск задач мейнтейнера
result = await client.api.task.progress.find_tasks( result = await client.api.task.progress.find_tasks(
input=["fiersik"], branch="sisyphus", by_package=False input=["fiersik"], branch=Branch.sisyphus, by_package=False
) )
for task in result.tasks[:5]: for task in result.tasks[:5]:
print(f"#{task.task_id} [{task.task_state}] {task.task_owner}") print(f"#{task.task_id} [{task.task_state}] {task.task_owner}")
# Информация о конкретной задаче
if result.tasks: if result.tasks:
info = await client.api.task.task_info(result.tasks[0].task_id) info = await client.api.task.task_info(result.tasks[0].task_id)
print(f"\nЗадача #{info.id}: {info.state} ({info.branch})") print(f"\nЗадача #{info.id}: {info.state} ({info.branch})")
......
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
branch = "sisyphus" branch = Branch.sisyphus
await client.appstream.data.load_by_branch(branch, "latest") await client.appstream.data.load_by_branch(branch, "latest")
for name in ["firefox", "telegram-desktop", "gimp", "vlc"]: for name in ["firefox", "telegram-desktop", "gimp", "vlc"]:
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
...@@ -9,7 +10,7 @@ async def main(): ...@@ -9,7 +10,7 @@ async def main():
await client.init() await client.init()
result = await client.api.dependencies.backport_helper( result = await client.api.dependencies.backport_helper(
"sisyphus", "p11", ["ocaml"] Branch.sisyphus, Branch.p11, ["ocaml"]
) )
print(f"Бэкпорт ocaml из sisyphus в p11 ({result.count} пакетов):") print(f"Бэкпорт ocaml из sisyphus в p11 ({result.count} пакетов):")
for level in result.dependencies: for level in result.dependencies:
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
...@@ -11,7 +12,7 @@ async def main(): ...@@ -11,7 +12,7 @@ async def main():
pkgsets = await client.api.packageset.active_packagesets() pkgsets = await client.api.packageset.active_packagesets()
print(f"Активные ветки: {', '.join(pkgsets.packagesets)}") print(f"Активные ветки: {', '.join(pkgsets.packagesets)}")
diff = await client.api.packageset.compare_packagesets("sisyphus", "p11") diff = await client.api.packageset.compare_packagesets(Branch.sisyphus, Branch.p11)
print(f"\nsisyphus vs p11 ({len(diff.packages)} записей):") print(f"\nsisyphus vs p11 ({len(diff.packages)} записей):")
for p in diff.packages[:10]: for p in diff.packages[:10]:
p1, p2 = p.package1, p.package2 p1, p2 = p.package1, p.package2
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
...@@ -11,7 +12,7 @@ async def main(): ...@@ -11,7 +12,7 @@ async def main():
branches = await client.api.errata.errata_branches() branches = await client.api.errata.errata_branches()
print(f"Ветки с эрратами: {', '.join(branches.branches)}") print(f"Ветки с эрратами: {', '.join(branches.branches)}")
adv = await client.api.errata.advisory(branch="p11", limit=10) adv = await client.api.errata.advisory(branch=Branch.p11, limit=10)
if adv.erratas: if adv.erratas:
print(f"\nПоследние advisory для p11:") print(f"\nПоследние advisory для p11:")
for e in adv.erratas: for e in adv.erratas:
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
...@@ -13,7 +14,7 @@ async def main(): ...@@ -13,7 +14,7 @@ async def main():
for img in images.images[:5]: for img in images.images[:5]:
print(f" {img.name} ({img.branch}, {img.date})") print(f" {img.name} ({img.branch}, {img.date})")
active = await client.api.image.active_images(branch="p11") active = await client.api.image.active_images(branch=Branch.p11)
if active.images: if active.images:
print(f"\nАктивные образы p11:") print(f"\nАктивные образы p11:")
for img in active.images: for img in active.images:
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch, Acl
async def main(): async def main():
...@@ -9,7 +10,7 @@ async def main(): ...@@ -9,7 +10,7 @@ async def main():
await client.init() await client.init()
nickname = "fiersik" nickname = "fiersik"
branch = "sisyphus" branch = Branch.sisyphus
info = await client.api.site.maintainer_info(branch, nickname) info = await client.api.site.maintainer_info(branch, nickname)
mi = info.information mi = info.information
...@@ -20,7 +21,7 @@ async def main(): ...@@ -20,7 +21,7 @@ async def main():
for pkg in pkgs.packages[:5]: for pkg in pkgs.packages[:5]:
print(f" {pkg.name} {pkg.version}-{pkg.release}") print(f" {pkg.name} {pkg.version}-{pkg.release}")
bugs = await client.api.bug.bugzilla_by_maintainer(nickname) bugs = await client.api.bug.bugzilla_by_maintainer(nickname, by_acl=Acl.by_nick)
if bugs and bugs.bugs: if bugs and bugs.bugs:
print(f"\nБаги ({len(bugs.bugs)}):") print(f"\nБаги ({len(bugs.bugs)}):")
for bug in bugs.bugs[:5]: for bug in bugs.bugs[:5]:
......
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
branch = "sisyphus" branch = Branch.sisyphus
name = "firefox" name = "firefox"
found = await client.api.site.find_packages(name, branch=branch) found = await client.api.site.find_packages(name, branch=branch)
......
...@@ -2,13 +2,14 @@ ...@@ -2,13 +2,14 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
client = ALTRepo() client = ALTRepo()
await client.init() await client.init()
branch = "sisyphus" branch = Branch.sisyphus
files = await client.api.file.search(branch, "nginx.conf") files = await client.api.file.search(branch, "nginx.conf")
print(f"Файлы nginx.conf ({len(files.files)}):") print(f"Файлы nginx.conf ({len(files.files)}):")
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
import asyncio import asyncio
from altrepo import ALTRepo from altrepo import ALTRepo
from altrepo.api.types import Branch
async def main(): async def main():
...@@ -13,7 +14,7 @@ async def main(): ...@@ -13,7 +14,7 @@ async def main():
for pkg in fixes.packages[:5]: for pkg in fixes.packages[:5]:
print(f" {pkg.name} {pkg.version}-{pkg.release} ({pkg.branch})") print(f" {pkg.name} {pkg.version}-{pkg.release} ({pkg.branch})")
erratas = await client.api.errata.search(branch="p11", name="openssh") erratas = await client.api.errata.search(branch=Branch.p11, name="openssh")
if erratas.erratas: if erratas.erratas:
print(f"\nЭрраты openssh в p11:") print(f"\nЭрраты openssh в p11:")
for e in erratas.erratas[:5]: for e in erratas.erratas[:5]:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment