fmn.backends.pagure module

class fmn.backends.pagure.PagureAsyncProxy(base_url: str | None = None, **kwargs)[source]

Bases: APIClient

Proxy for the FASJSON API endpoints used in FMN

API_VERSION = '0'
PROJECT_TOPIC_RE = re.compile('pagure\\.project\\.(?P<usergroup>user|group)\\.(?P<action>access\\.updated|added|removed)$')
property api_url: str
determine_next_page_params(url: str, params: dict, result: dict) tuple[str, dict] | tuple[None, None][source]

Determine parameters for next page.

Parameters:
  • url – API endpoint URL

  • params – Query parameters (can be modified)

  • result – Result dictionary of previous query

Returns:

Tuple of (new URL, new params dict) or (None, None) if last page

async get_group_projects(*, name: str, acl: PagureRole | None = None) list[dict[str, Any]][source]
async get_project_groups(*, project_path: str, roles: PagureRole = PagureRole.GROUP_ROLES_MAINTAINER) list[str][source]
async get_project_users(*, project_path: str, roles: PagureRole = PagureRole.USER_ROLES_MAINTAINER) list[str][source]
async get_projects(*, namespace: str | None = None, pattern: str | None = None, username: str | None = None, owner: str | None = None, short: bool = True, fork: bool = False) list[dict[str, Any]][source]
async get_user_projects(*, username: str) list[dict[str, Any]][source]
async invalidate_on_message(message: Message) None[source]
class fmn.backends.pagure.PagureRole(value)[source]

Bases: IntFlag

An enumeration.

ADMIN = 2
COLLABORATOR = 8
COMMIT = 4
GROUP_ROLES = 30
GROUP_ROLES_MAINTAINER = 14
GROUP_ROLES_MAINTAINER_SET = {PagureRole.ADMIN, PagureRole.COMMIT, PagureRole.COLLABORATOR}
GROUP_ROLES_SET = {PagureRole.ADMIN, PagureRole.COMMIT, PagureRole.COLLABORATOR, PagureRole.TICKET}
OWNER = 1
TICKET = 16
USER_ROLES = 31
USER_ROLES_MAINTAINER = 15
USER_ROLES_MAINTAINER_SET = {PagureRole.OWNER, PagureRole.ADMIN, PagureRole.COMMIT, PagureRole.COLLABORATOR}
USER_ROLES_SET = {PagureRole.OWNER, PagureRole.ADMIN, PagureRole.COMMIT, PagureRole.COLLABORATOR, PagureRole.TICKET}
fmn.backends.pagure.get_distgit_proxy() PagureAsyncProxy[source]