Module ogr.services.forgejo

Sub-modules

ogr.services.forgejo.issue
ogr.services.forgejo.project
ogr.services.forgejo.pull_request
ogr.services.forgejo.service
ogr.services.forgejo.user

Classes

class ForgejoIssue (raw_issue, project: forgejo.ForgejoProject)
Expand source code
class ForgejoIssue(BaseIssue):
    def __init__(self, raw_issue, project: "forgejo.ForgejoProject"):
        super().__init__(raw_issue, project)

Attributes

project : GitProject
Project of the issue.

Ancestors

Inherited members

class ForgejoProject (repo: str,
service: forgejo.ForgejoService,
namespace: str,
forgejo_repo: pyforgejo.types.repository.Repository | None = None,
**kwargs)
Expand source code
class ForgejoProject(BaseGitProject):
    service: "forgejo.ForgejoService"

    def __init__(
        self,
        repo: str,
        service: "forgejo.ForgejoService",
        namespace: str,
        forgejo_repo: Optional[Repository] = None,
        **kwargs,
    ):
        super().__init__(repo, service, namespace)
        self._forgejo_repo = forgejo_repo

    @cached_property
    def forgejo_repo(self):
        namespace = self.namespace or self.service.user.get_username()
        return self.service.api.repository.repo_get(
            owner=namespace,
            repo=self.repo,
        )

Args

repo
Name of the project.
service
GitService instance.
namespace

Namespace of the project.

  • GitHub: username or org name.
  • GitLab: username or org name.
  • Pagure: namespace (e.g. "rpms").

In case of forks: "fork/{username}/{namespace}".

Ancestors

Class variables

var serviceForgejoService

Instance variables

var forgejo_repo
Expand source code
@cached_property
def forgejo_repo(self):
    namespace = self.namespace or self.service.user.get_username()
    return self.service.api.repository.repo_get(
        owner=namespace,
        repo=self.repo,
    )

Inherited members

class ForgejoPullRequest (raw_pr: Any, project: forgejo.ForgejoProject)
Expand source code
class ForgejoPullRequest(BasePullRequest):
    def __init__(
        self,
        raw_pr: Any,
        project: "forgejo.ForgejoProject",
    ):
        super().__init__(raw_pr, project)

Attributes

project : GitProject
Project of the pull request.

Ancestors

Inherited members

class ForgejoService (instance_url: str = 'https://codeberg.org',
api_key: str | None = None,
**kwargs)
Expand source code
@use_for_service("forgejo")
@use_for_service("codeberg.org")
class ForgejoService(BaseGitService):
    version = "/api/v1"

    def __init__(
        self,
        instance_url: str = "https://codeberg.org",
        api_key: Optional[str] = None,
        **kwargs,
    ):
        super().__init__()
        self.instance_url = instance_url + self.version
        self._token = f"token {api_key}"
        self._api = None

    @cached_property
    def api(self):
        return PyforgejoApi(base_url=self.instance_url, api_key=self._token)

    def get_project(  # type: ignore[override]
        self,
        repo: str,
        namespace: str,
        **kwargs,
    ) -> "ForgejoProject":
        return ForgejoProject(
            repo=repo,
            namespace=namespace,
            service=self,
            **kwargs,
        )

    @property
    def user(self) -> GitUser:
        return ForgejoUser(self)

    def project_create(
        self,
        repo: str,
        namespace: Optional[str] = None,
        description: Optional[str] = None,
    ) -> "ForgejoProject":
        if namespace:
            new_repo = self.api.organization.create_org_repo(
                org=namespace,
                name=repo,
                description=description,
            )
        else:
            new_repo = self.api.repository.create_current_user_repo(
                name=repo,
                description=description,
            )
        return ForgejoProject(
            repo=repo,
            namespace=namespace,
            service=self,
            github_repo=new_repo,
        )

    def get_project_from_url(self, url: str) -> "ForgejoProject":
        parsed_url = urlparse(url)
        path_parts = parsed_url.path.strip("/").split("/")

        if len(path_parts) < 2:
            raise OgrException(f"Invalid Forgejo URL: {url}")

        namespace = path_parts[0]
        repo = path_parts[1]

        return self.get_project(repo=repo, namespace=namespace)

Attributes

instance_url : str
URL of the git forge instance.

Ancestors

Class variables

var version

Instance variables

var api
Expand source code
@cached_property
def api(self):
    return PyforgejoApi(base_url=self.instance_url, api_key=self._token)

Inherited members