| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| """Contains data structures to parse the webhooks payload.""" |
|
|
| from typing import Literal, Optional |
|
|
| from .utils import is_pydantic_available |
|
|
|
|
| if is_pydantic_available(): |
| from pydantic import BaseModel |
| else: |
| |
| |
|
|
| class BaseModel: |
| def __init__(self, *args, **kwargs) -> None: |
| raise ImportError( |
| "You must have `pydantic` installed to use `WebhookPayload`. This is an optional dependency that" |
| " should be installed separately. Please run `pip install --upgrade pydantic` and retry." |
| ) |
|
|
|
|
| |
| |
| |
|
|
|
|
| WebhookEvent_T = Literal[ |
| "create", |
| "delete", |
| "move", |
| "update", |
| ] |
| RepoChangeEvent_T = Literal[ |
| "add", |
| "move", |
| "remove", |
| "update", |
| ] |
| RepoType_T = Literal[ |
| "dataset", |
| "model", |
| "space", |
| ] |
| DiscussionStatus_T = Literal[ |
| "closed", |
| "draft", |
| "open", |
| "merged", |
| ] |
| SupportedWebhookVersion = Literal[3] |
|
|
|
|
| class ObjectId(BaseModel): |
| id: str |
|
|
|
|
| class WebhookPayloadUrl(BaseModel): |
| web: str |
| api: Optional[str] = None |
|
|
|
|
| class WebhookPayloadMovedTo(BaseModel): |
| name: str |
| owner: ObjectId |
|
|
|
|
| class WebhookPayloadWebhook(ObjectId): |
| version: SupportedWebhookVersion |
|
|
|
|
| class WebhookPayloadEvent(BaseModel): |
| action: WebhookEvent_T |
| scope: str |
|
|
|
|
| class WebhookPayloadDiscussionChanges(BaseModel): |
| base: str |
| mergeCommitId: Optional[str] = None |
|
|
|
|
| class WebhookPayloadComment(ObjectId): |
| author: ObjectId |
| hidden: bool |
| content: Optional[str] = None |
| url: WebhookPayloadUrl |
|
|
|
|
| class WebhookPayloadDiscussion(ObjectId): |
| num: int |
| author: ObjectId |
| url: WebhookPayloadUrl |
| title: str |
| isPullRequest: bool |
| status: DiscussionStatus_T |
| changes: Optional[WebhookPayloadDiscussionChanges] = None |
| pinned: Optional[bool] = None |
|
|
|
|
| class WebhookPayloadRepo(ObjectId): |
| owner: ObjectId |
| head_sha: Optional[str] = None |
| name: str |
| private: bool |
| subdomain: Optional[str] = None |
| tags: Optional[list[str]] = None |
| type: Literal["dataset", "model", "space"] |
| url: WebhookPayloadUrl |
|
|
|
|
| class WebhookPayloadUpdatedRef(BaseModel): |
| ref: str |
| oldSha: Optional[str] = None |
| newSha: Optional[str] = None |
|
|
|
|
| class WebhookPayload(BaseModel): |
| event: WebhookPayloadEvent |
| repo: WebhookPayloadRepo |
| discussion: Optional[WebhookPayloadDiscussion] = None |
| comment: Optional[WebhookPayloadComment] = None |
| webhook: WebhookPayloadWebhook |
| movedTo: Optional[WebhookPayloadMovedTo] = None |
| updatedRefs: Optional[list[WebhookPayloadUpdatedRef]] = None |
|
|