fix(ci): fix black/ruff failures, add CoC and PR template

- Fix Python formatting (sync no longer strips blank lines from .py files)
- Remove test_community_build.py (tests private sync module)
- Fix ruff warnings in test files
- Add CODE_OF_CONDUCT.md
- Add .github/PULL_REQUEST_TEMPLATE.md

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
airano
2026-02-17 18:19:39 +03:30
parent c9083d86b1
commit c73e39f6e4
135 changed files with 1185 additions and 317 deletions

View File

@@ -9,6 +9,7 @@ from typing import Any
from pydantic import BaseModel, ConfigDict, Field
class Site(BaseModel):
"""Gitea site configuration"""
@@ -20,6 +21,7 @@ class Site(BaseModel):
alias: str | None = Field(None, description="Site alias")
oauth_enabled: bool = Field(default=False, description="Whether OAuth is enabled")
class PaginationParams(BaseModel):
"""Pagination parameters for list endpoints"""
@@ -28,6 +30,7 @@ class PaginationParams(BaseModel):
page: int = Field(default=1, ge=1, description="Page number (starts at 1)")
limit: int = Field(default=30, ge=1, le=100, description="Number of items per page (1-100)")
class ErrorResponse(BaseModel):
"""Standard error response"""
@@ -36,6 +39,7 @@ class ErrorResponse(BaseModel):
code: str | None = Field(None, description="Error code")
details: dict[str, Any] | None = Field(None, description="Additional error details")
class SuccessResponse(BaseModel):
"""Standard success response"""
@@ -43,6 +47,7 @@ class SuccessResponse(BaseModel):
message: str = Field(..., description="Success message")
data: dict[str, Any] | None = Field(None, description="Response data")
class GiteaUser(BaseModel):
"""Gitea user information"""
@@ -55,6 +60,7 @@ class GiteaUser(BaseModel):
avatar_url: str | None = None
is_admin: bool = False
class GiteaPermissions(BaseModel):
"""Repository permissions"""
@@ -64,6 +70,7 @@ class GiteaPermissions(BaseModel):
push: bool = False
pull: bool = False
class GiteaTimestamps(BaseModel):
"""Common timestamp fields"""

View File

@@ -10,6 +10,7 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator
from .common import GiteaUser
class Label(BaseModel):
"""Issue/PR label"""
@@ -21,6 +22,7 @@ class Label(BaseModel):
description: str | None = None
url: str | None = None
class Milestone(BaseModel):
"""Issue/PR milestone"""
@@ -37,6 +39,7 @@ class Milestone(BaseModel):
closed_at: datetime | None = None
due_on: datetime | None = None
class Issue(BaseModel):
"""Gitea issue model"""
@@ -66,6 +69,7 @@ class Issue(BaseModel):
html_url: str
url: str
class Comment(BaseModel):
"""Issue/PR comment"""
@@ -82,6 +86,7 @@ class Comment(BaseModel):
created_at: datetime
updated_at: datetime
class CreateIssueRequest(BaseModel):
"""Request to create an issue"""
@@ -97,6 +102,7 @@ class CreateIssueRequest(BaseModel):
milestone: int | None = Field(None, description="Milestone ID")
ref: str | None = Field(None, description="Issue ref")
class UpdateIssueRequest(BaseModel):
"""Request to update an issue"""
@@ -120,6 +126,7 @@ class UpdateIssueRequest(BaseModel):
raise ValueError("State must be 'open' or 'closed'")
return v
class CreateCommentRequest(BaseModel):
"""Request to create a comment"""
@@ -127,6 +134,7 @@ class CreateCommentRequest(BaseModel):
body: str = Field(..., min_length=1, description="Comment body")
class CreateLabelRequest(BaseModel):
"""Request to create a label"""
@@ -136,6 +144,7 @@ class CreateLabelRequest(BaseModel):
color: str = Field(..., pattern=r"^[0-9A-Fa-f]{6}$", description="Label color (hex without #)")
description: str | None = Field(None, max_length=200, description="Label description")
class CreateMilestoneRequest(BaseModel):
"""Request to create a milestone"""
@@ -153,6 +162,7 @@ class CreateMilestoneRequest(BaseModel):
raise ValueError("State must be 'open' or 'closed'")
return v
class IssueListFilters(BaseModel):
"""Filters for listing issues"""

View File

@@ -11,6 +11,7 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator
from .common import GiteaUser
from .issue import Label, Milestone
class PRBranchInfo(BaseModel):
"""Pull request branch information"""
@@ -22,6 +23,7 @@ class PRBranchInfo(BaseModel):
repo_id: int
repository: dict | None = None
class PullRequest(BaseModel):
"""Gitea pull request model"""
@@ -58,6 +60,7 @@ class PullRequest(BaseModel):
allow_maintainer_edit: bool = False
url: str
class PRReview(BaseModel):
"""Pull request review"""
@@ -72,6 +75,7 @@ class PRReview(BaseModel):
pull_request_url: str
submitted_at: datetime
class PRCommit(BaseModel):
"""Pull request commit"""
@@ -86,6 +90,7 @@ class PRCommit(BaseModel):
committer: GiteaUser | None = None
parents: list[dict] = []
class PRFile(BaseModel):
"""Pull request file change"""
@@ -101,6 +106,7 @@ class PRFile(BaseModel):
patch: str | None = None
previous_filename: str | None = None
class CreatePullRequestRequest(BaseModel):
"""Request to create a pull request"""
@@ -116,6 +122,7 @@ class CreatePullRequestRequest(BaseModel):
milestone: int | None = Field(None, description="Milestone ID")
due_date: datetime | None = Field(None, description="Due date")
class UpdatePullRequestRequest(BaseModel):
"""Request to update a pull request"""
@@ -139,6 +146,7 @@ class UpdatePullRequestRequest(BaseModel):
raise ValueError("State must be 'open' or 'closed'")
return v
class MergePullRequestRequest(BaseModel):
"""Request to merge a pull request"""
@@ -162,6 +170,7 @@ class MergePullRequestRequest(BaseModel):
raise ValueError(f"Merge method must be one of: {', '.join(allowed)}")
return v
class CreateReviewRequest(BaseModel):
"""Request to create a review"""
@@ -179,6 +188,7 @@ class CreateReviewRequest(BaseModel):
raise ValueError(f"Review event must be one of: {', '.join(allowed)}")
return v
class RequestReviewersRequest(BaseModel):
"""Request reviewers for a pull request"""
@@ -187,6 +197,7 @@ class RequestReviewersRequest(BaseModel):
reviewers: list[str] = Field(..., min_items=1, description="List of reviewer usernames")
team_reviewers: list[str] | None = Field(None, description="List of team slugs")
class PRListFilters(BaseModel):
"""Filters for listing pull requests"""

View File

@@ -11,6 +11,7 @@ from pydantic import BaseModel, ConfigDict, Field, field_validator
from .common import GiteaPermissions, GiteaUser
class Repository(BaseModel):
"""Gitea repository model"""
@@ -59,6 +60,7 @@ class Repository(BaseModel):
default_merge_style: str = "merge"
avatar_url: str | None = None
class Branch(BaseModel):
"""Git branch model"""
@@ -73,6 +75,7 @@ class Branch(BaseModel):
user_can_push: bool = False
user_can_merge: bool = False
class Tag(BaseModel):
"""Git tag model"""
@@ -85,6 +88,7 @@ class Tag(BaseModel):
zipball_url: str | None = None
tarball_url: str | None = None
class FileContent(BaseModel):
"""File content model"""
@@ -104,6 +108,7 @@ class FileContent(BaseModel):
target: str | None = None # For symlinks
submodule_git_url: str | None = None
class CreateRepositoryRequest(BaseModel):
"""Request to create a repository"""
@@ -131,6 +136,7 @@ class CreateRepositoryRequest(BaseModel):
)
return v
class UpdateRepositoryRequest(BaseModel):
"""Request to update a repository"""
@@ -148,6 +154,7 @@ class UpdateRepositoryRequest(BaseModel):
allow_rebase: bool | None = Field(None, description="Allow rebase")
allow_squash_merge: bool | None = Field(None, description="Allow squash merge")
class CreateBranchRequest(BaseModel):
"""Request to create a branch"""
@@ -157,6 +164,7 @@ class CreateBranchRequest(BaseModel):
old_branch_name: str | None = Field(None, description="Source branch (default: default branch)")
old_ref_name: str | None = Field(None, description="Source commit SHA or ref")
class CreateTagRequest(BaseModel):
"""Request to create a tag"""
@@ -166,6 +174,7 @@ class CreateTagRequest(BaseModel):
message: str | None = Field(None, description="Tag message")
target: str | None = Field(None, description="Target commit SHA (default: latest)")
class CreateFileRequest(BaseModel):
"""Request to create a file"""
@@ -180,6 +189,7 @@ class CreateFileRequest(BaseModel):
committer_email: str | None = Field(None, description="Committer email")
new_branch: str | None = Field(None, description="Create new branch for this commit")
class UpdateFileRequest(BaseModel):
"""Request to update a file"""

View File

@@ -8,6 +8,7 @@ from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field
class User(BaseModel):
"""Gitea user model"""
@@ -34,6 +35,7 @@ class User(BaseModel):
starred_repos_count: int = 0
username: str | None = None # Alias for login
class Organization(BaseModel):
"""Gitea organization model"""
@@ -50,6 +52,7 @@ class Organization(BaseModel):
repo_admin_change_team_access: bool = False
username: str | None = None # Alias for name
class Team(BaseModel):
"""Organization team model"""
@@ -65,6 +68,7 @@ class Team(BaseModel):
units: list[str] | None = None
units_map: dict | None = None
class TeamMember(BaseModel):
"""Team member model"""
@@ -73,6 +77,7 @@ class TeamMember(BaseModel):
user: User
role: str | None = None # Role in team
class Email(BaseModel):
"""User email model"""
@@ -82,6 +87,7 @@ class Email(BaseModel):
verified: bool
primary: bool
class SearchUsersRequest(BaseModel):
"""Request to search users"""
@@ -90,6 +96,7 @@ class SearchUsersRequest(BaseModel):
q: str | None = Field(None, description="Search query")
uid: int | None = Field(None, description="User ID")
class SearchOrgsRequest(BaseModel):
"""Request to search organizations"""

View File

@@ -9,6 +9,7 @@ from typing import Any
from pydantic import BaseModel, ConfigDict, Field, field_validator
class Webhook(BaseModel):
"""Gitea webhook model"""
@@ -22,6 +23,7 @@ class Webhook(BaseModel):
updated_at: datetime
created_at: datetime
class WebhookConfig(BaseModel):
"""Webhook configuration"""
@@ -33,6 +35,7 @@ class WebhookConfig(BaseModel):
http_method: str | None = "POST"
branch_filter: str | None = None
class CreateWebhookRequest(BaseModel):
"""Request to create a webhook"""
@@ -109,6 +112,7 @@ class CreateWebhookRequest(BaseModel):
v["content_type"] = "json"
return v
class UpdateWebhookRequest(BaseModel):
"""Request to update a webhook"""
@@ -152,6 +156,7 @@ class UpdateWebhookRequest(BaseModel):
raise ValueError(f"Invalid event: {event}")
return v
class WebhookTestResult(BaseModel):
"""Webhook test result"""