nat.tool.github_tools#

Classes#

Functions#

_validate_url_path_component(→ str)

Validate one unencoded URL path component.

_parse_repo_name(→ tuple[str, str])

Parse and validate an owner/repository GitHub repository name.

_validate_and_encode_branch(→ str)

Validate a Git branch before using it in a GitHub ref URL.

github_tool(config, _builder)

Register the github function group with shared configuration.

github_files_tool(config, _builder)

Module Contents#

_validate_url_path_component(value: str, field_name: str) → str#

Validate one unencoded URL path component.

Encoding alone does not stop a URL parser from interpreting dot segments, so reject path syntax before percent-encoding a value for an outbound URL.

_parse_repo_name(repo_name: str) → tuple[str, str]#

Parse and validate an owner/repository GitHub repository name.

async _validate_and_encode_branch(branch: str) → str#

Validate a Git branch before using it in a GitHub ref URL.

class GithubCreateIssueModel(/, **data: Any)#

Bases: pydantic.BaseModel

title: str = None#
body: str = None#
class GithubCreateIssueModelList(/, **data: Any)#

Bases: pydantic.BaseModel

issues: list[GithubCreateIssueModel] = None#
class GithubGetIssueModel(/, **data: Any)#

Bases: pydantic.BaseModel

state: Literal['open', 'closed', 'all'] | None = None#
assignee: str | None = None#
creator: str | None = None#
mentioned: str | None = None#
labels: list[str] | None = None#
since: str | None = None#
classmethod validate_since(v)#
class GithubGetIssueModelList(/, **data: Any)#

Bases: pydantic.BaseModel

filter_parameters: list[GithubGetIssueModel] = None#
class GithubUpdateIssueModel(/, **data: Any)#

Bases: pydantic.BaseModel

issue_number: pydantic.PositiveInt = None#
title: str | None = None#
body: str | None = None#
state: Literal['open', 'closed'] | None = None#
state_reason: Literal['completed', 'not_planned', 'reopened'] | None = None#
labels: list[str] | None = None#
assignees: list[str] | None = None#
class GithubUpdateIssueModelList(/, **data: Any)#

Bases: pydantic.BaseModel

issues: list[GithubUpdateIssueModel] = None#
class GithubCreatePullModel(/, **data: Any)#

Bases: pydantic.BaseModel

title: str = None#
body: str = None#
source_branch: str = None#
target_branch: str = None#
assignees: list[str] | None = None#
reviewers: list[str] | None = None#
class GithubCreatePullList(/, **data: Any)#

Bases: pydantic.BaseModel

pull_details: list[GithubCreatePullModel] = None#
class GithubGetPullsModel(/, **data: Any)#

Bases: pydantic.BaseModel

state: Literal['open', 'closed', 'all'] | None = None#
head: str | None = None#
base: str | None = None#
class GithubGetPullsModelList(/, **data: Any)#

Bases: pydantic.BaseModel

filter_parameters: list[GithubGetPullsModel] = None#
class GithubCommitCodeModel(/, **data: Any)#

Bases: pydantic.BaseModel

branch: str = None#
commit_msg: str = None#
local_path: str = None#
remote_path: str = None#
class GithubCommitCodeModelList(/, **data: Any)#

Bases: pydantic.BaseModel

updated_files: list[GithubCommitCodeModel] = None#
class GithubGroupConfig#

Bases: nat.data_models.function.FunctionGroupBaseConfig

Function group for GitHub repository operations.

Exposes issue, pull request, and commit operations with shared configuration.

repo_name: str = None#
timeout: int = None#
local_repo_dir: str | None = None#
async github_tool(
config: GithubGroupConfig,
_builder: nat.builder.builder.Builder,
)#

Register the github function group with shared configuration.

Implements:
  • create_issue, get_issue, update_issue

  • create_pull, get_pull

  • commit

class GithubFilesGroupConfig#

Bases: nat.data_models.function.FunctionBaseConfig

timeout: int = None#
async github_files_tool(
config: GithubFilesGroupConfig,
_builder: nat.builder.builder.Builder,
)#