| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | """Contains data structures to parse the webhooks payload.""" |
| |
|
| | from typing import List, 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 |
| |
|