python-cnb 0.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. cnb/__init__.py +7 -0
  2. cnb/artifactory.py +205 -0
  3. cnb/assets.py +219 -0
  4. cnb/build.py +91 -0
  5. cnb/client.py +79 -0
  6. cnb/cnb.py +46 -0
  7. cnb/collaborators.py +320 -0
  8. cnb/contributors.py +72 -0
  9. cnb/exceptions.py +21 -0
  10. cnb/followers.py +50 -0
  11. cnb/git.py +441 -0
  12. cnb/gitsettings.py +158 -0
  13. cnb/issues.py +233 -0
  14. cnb/missions.py +23 -0
  15. cnb/models/__init__.py +0 -0
  16. cnb/models/api.py +393 -0
  17. cnb/models/chart.py +43 -0
  18. cnb/models/constant.py +85 -0
  19. cnb/models/convert.py +13 -0
  20. cnb/models/die.py +19 -0
  21. cnb/models/dto.py +1523 -0
  22. cnb/models/git_woa_com_cnb_monorepo_git_internal_app_git_service_bff_api.py +14 -0
  23. cnb/models/git_woa_com_cnb_monorepo_git_internal_app_git_service_bff_web.py +14 -0
  24. cnb/models/git_woa_com_cnb_monorepo_git_internal_app_vcs_service_bff_api.py +13 -0
  25. cnb/models/git_woa_com_cnb_monorepo_git_internal_dto_web.py +14 -0
  26. cnb/models/git_woa_com_cnb_monorepo_mission_mission_resource_dto_web.py +13 -0
  27. cnb/models/handler.py +83 -0
  28. cnb/models/http.py +20 -0
  29. cnb/models/identity.py +19 -0
  30. cnb/models/label.py +15 -0
  31. cnb/models/map_constant.py +11 -0
  32. cnb/models/models.py +50 -0
  33. cnb/models/openapi.py +64 -0
  34. cnb/models/organization.py +16 -0
  35. cnb/models/organizations.py +18 -0
  36. cnb/models/scope.py +28 -0
  37. cnb/models/v1.py +26 -0
  38. cnb/models/web.py +1045 -0
  39. cnb/models/webapi.py +162 -0
  40. cnb/models/wechat.py +25 -0
  41. cnb/organizations.py +192 -0
  42. cnb/pulls.py +242 -0
  43. cnb/releases.py +170 -0
  44. cnb/repocontributor.py +31 -0
  45. cnb/repolabels.py +75 -0
  46. cnb/repositories.py +243 -0
  47. cnb/starring.py +58 -0
  48. cnb/users.py +73 -0
  49. cnb/workspace.py +66 -0
  50. python_cnb-0.1.0.dist-info/METADATA +102 -0
  51. python_cnb-0.1.0.dist-info/RECORD +54 -0
  52. python_cnb-0.1.0.dist-info/WHEEL +5 -0
  53. python_cnb-0.1.0.dist-info/licenses/LICENSE +20 -0
  54. python_cnb-0.1.0.dist-info/top_level.txt +1 -0
cnb/models/webapi.py ADDED
@@ -0,0 +1,162 @@
1
+ # Code generated by cnb.cool/cnb/sdk/cnb-sdk-generator. DO NOT EDIT.
2
+ # versions:
3
+ # cnb-sdk-generator: 1.0.2
4
+ # source: https://api.cnb.cool/swagger.json
5
+
6
+ from pydantic import Field
7
+ from enum import Enum
8
+ from typing import Optional, Dict
9
+ from .models import CNBBaseModel
10
+ class CommitAssetID(CNBBaseModel):
11
+ asset_id: Optional[str] = Field(alias="asset_id", default=None)
12
+ pass
13
+ class CreateBranchForm(CNBBaseModel):
14
+ new_branch_name: Optional[str] = Field(alias="new_branch_name", default=None)
15
+ start_point: Optional[str] = Field(alias="start_point", default=None)
16
+ pass
17
+ class CreateIssueCommentForm(CNBBaseModel):
18
+ body: Optional[str] = Field(alias="body", default=None)
19
+ pass
20
+ class CreatePullRequestCommentForm(CNBBaseModel):
21
+ body: Optional[str] = Field(alias="body", default=None)
22
+ pass
23
+ class CreatePullRequestForm(CNBBaseModel):
24
+ assignees: Optional[list[str]] = Field(alias="assignees", default=None)
25
+ base_branch: Optional[str] = Field(alias="base_branch", default=None)
26
+ body: Optional[str] = Field(alias="body", default=None)
27
+ head_branch: Optional[str] = Field(alias="head_branch", default=None)
28
+ head_repo_slug: Optional[str] = Field(alias="head_repo_slug", default=None)
29
+ labels: Optional[list[str]] = Field(alias="labels", default=None)
30
+ reviewers: Optional[list[str]] = Field(alias="reviewers", default=None)
31
+ title: Optional[str] = Field(alias="title", default=None)
32
+ pass
33
+ class CreateTagForm(CNBBaseModel):
34
+ message: Optional[str] = Field(alias="message", default=None)
35
+ name: Optional[str] = Field(alias="name", default=None)
36
+ target: Optional[str] = Field(alias="target", default=None)
37
+ pass
38
+ class HeadRef(CNBBaseModel):
39
+ ref: Optional[str] = Field(alias="ref", default=None)
40
+ pass
41
+ class InitRepositoryForm(CNBBaseModel):
42
+ gitignore_template: Optional[str] = Field(alias="gitignore_template", default=None)
43
+ is_auto_readme: Optional[bool] = Field(alias="is_auto_readme", default=None)
44
+ license_template: Optional[str] = Field(alias="license_template", default=None)
45
+ pass
46
+ class MergePullRequestForm(CNBBaseModel):
47
+ commit_message: Optional[str] = Field(alias="commit_message", default=None)
48
+ merge_style: Optional[str] = Field(alias="merge_style", default=None)
49
+ pass
50
+ class PatchIssueAssigneesForm(CNBBaseModel):
51
+ assignees: Optional[list[str]] = Field(alias="assignees", default=None)
52
+ pass
53
+ class PatchPullRequestAssigneesForm(CNBBaseModel):
54
+ assignees: Optional[list[str]] = Field(alias="assignees", default=None)
55
+ pass
56
+ class PatchPullRequestReviewCommentForm(CNBBaseModel):
57
+ body: Optional[str] = Field(alias="body", default=None)
58
+ pass
59
+ class PatchPullRequestReviewForm(CNBBaseModel):
60
+ body: Optional[str] = Field(alias="body", default=None)
61
+ pass
62
+ class PatchPullRequestReviewersForm(CNBBaseModel):
63
+ reviewers: Optional[list[str]] = Field(alias="reviewers", default=None)
64
+ pass
65
+ class PatchReleaseForm(CNBBaseModel):
66
+ body: Optional[str] = Field(alias="body", default=None)
67
+ is_draft: Optional[bool] = Field(alias="is_draft", default=None)
68
+ is_prerelease: Optional[bool] = Field(alias="is_prerelease", default=None)
69
+ make_latest: Optional[str] = Field(alias="make_latest", default=None)
70
+ title: Optional[str] = Field(alias="title", default=None)
71
+ pass
72
+ class PostCommitFile(CNBBaseModel):
73
+ content: Optional[str] = Field(alias="content", default=None)
74
+ encoding: Optional[str] = Field(alias="encoding", default=None)
75
+ is_deleted: Optional[bool] = Field(alias="is_deleted", default=None)
76
+ is_executable: Optional[bool] = Field(alias="is_executable", default=None)
77
+ path: Optional[str] = Field(alias="path", default=None)
78
+ pass
79
+ class PostCommitForm(CNBBaseModel):
80
+ base_branch: Optional[str] = Field(alias="base_branch", default=None)
81
+ files: Optional[list['PostCommitFile']] = Field(alias="files", default=None)
82
+ message: Optional[str] = Field(alias="message", default=None)
83
+ new_branch: Optional[str] = Field(alias="new_branch", default=None)
84
+ parent_commit_sha: Optional[str] = Field(alias="parent_commit_sha", default=None)
85
+ pass
86
+ class PostPendingPullRequestReviewEventForm(CNBBaseModel):
87
+ body: Optional[str] = Field(alias="body", default=None)
88
+ event: Optional[str] = Field(alias="event", default=None)
89
+ pass
90
+ class PostPullRequestReviewCommentForm(CNBBaseModel):
91
+ body: Optional[str] = Field(alias="body", default=None)
92
+ end_line: Optional[int] = Field(alias="end_line", default=None)
93
+ end_side: Optional[str] = Field(alias="end_side", default=None)
94
+ path: Optional[str] = Field(alias="path", default=None)
95
+ start_line: Optional[int] = Field(alias="start_line", default=None)
96
+ start_side: Optional[str] = Field(alias="start_side", default=None)
97
+ subject_type: Optional[str] = Field(alias="subject_type", default=None)
98
+ pass
99
+ class PostPullRequestReviewForm(CNBBaseModel):
100
+ body: Optional[str] = Field(alias="body", default=None)
101
+ comment: Optional['PostPullRequestReviewCommentForm'] = Field(alias="comment", default=None)
102
+ event: Optional[str] = Field(alias="event", default=None)
103
+ pass
104
+ class PostPullRequestReviewReplyForm(CNBBaseModel):
105
+ body: Optional[str] = Field(alias="body", default=None)
106
+ reply_to_comment_id: Optional[str] = Field(alias="reply_to_comment_id", default=None)
107
+ pass
108
+ class PostReleaseAssetForm(CNBBaseModel):
109
+ content_type: Optional[str] = Field(alias="content_type", default=None)
110
+ name: Optional[str] = Field(alias="name", default=None)
111
+ path: Optional[str] = Field(alias="path", default=None)
112
+ size_in_byte: Optional[int] = Field(alias="size_in_byte", default=None)
113
+ token: Optional[str] = Field(alias="token", default=None)
114
+ pass
115
+ class PostReleaseForm(CNBBaseModel):
116
+ body: Optional[str] = Field(alias="body", default=None)
117
+ is_draft: Optional[bool] = Field(alias="is_draft", default=None)
118
+ is_prerelease: Optional[bool] = Field(alias="is_prerelease", default=None)
119
+ make_latest: Optional[str] = Field(alias="make_latest", default=None)
120
+ tag_name: Optional[str] = Field(alias="tag_name", default=None)
121
+ target_commitish: Optional[str] = Field(alias="target_commitish", default=None)
122
+ title: Optional[str] = Field(alias="title", default=None)
123
+ pass
124
+ class PullRequestNumber(CNBBaseModel):
125
+ number: Optional[str] = Field(alias="number", default=None)
126
+ pass
127
+ class PullRequestReviewID(CNBBaseModel):
128
+ comment_ids: Optional[list[str]] = Field(alias="comment_ids", default=None)
129
+ review_id: Optional[str] = Field(alias="review_id", default=None)
130
+ pass
131
+ class PutCommitAnnotation(CNBBaseModel):
132
+ key: Optional[str] = Field(alias="key", default=None)
133
+ value: Optional[str] = Field(alias="value", default=None)
134
+ pass
135
+ class PutCommitAnnotationsForm(CNBBaseModel):
136
+ annotations: Optional[list['PutCommitAnnotation']] = Field(alias="annotations", default=None)
137
+ pass
138
+ class PutIssueLabelsForm(CNBBaseModel):
139
+ labels: Optional[list[str]] = Field(alias="labels", default=None)
140
+ pass
141
+ class PutPullRequestLabelsForm(CNBBaseModel):
142
+ labels: Optional[list[str]] = Field(alias="labels", default=None)
143
+ pass
144
+ class PutTagAnnotation(CNBBaseModel):
145
+ key: Optional[str] = Field(alias="key", default=None)
146
+ value: Optional[str] = Field(alias="value", default=None)
147
+ pass
148
+ class PutTagAnnotationsForm(CNBBaseModel):
149
+ annotations: Optional[list['PutTagAnnotation']] = Field(alias="annotations", default=None)
150
+ pass
151
+ class ReleaseAssetID(CNBBaseModel):
152
+ asset_id: Optional[str] = Field(alias="asset_id", default=None)
153
+ pass
154
+ class UpdateCodeSensitiveIgnoreForm(CNBBaseModel):
155
+ ignore: Optional[bool] = Field(alias="ignore", default=None)
156
+ ignore_reason: Optional[str] = Field(alias="ignore_reason", default=None)
157
+ pass
158
+ class UpdatePullRequestForm(CNBBaseModel):
159
+ body: Optional[str] = Field(alias="body", default=None)
160
+ state: Optional[str] = Field(alias="state", default=None)
161
+ title: Optional[str] = Field(alias="title", default=None)
162
+ pass
cnb/models/wechat.py ADDED
@@ -0,0 +1,25 @@
1
+ # Code generated by cnb.cool/cnb/sdk/cnb-sdk-generator. DO NOT EDIT.
2
+ # versions:
3
+ # cnb-sdk-generator: 1.0.2
4
+ # source: https://api.cnb.cool/swagger.json
5
+
6
+ from pydantic import Field
7
+ from enum import Enum
8
+ from typing import Optional, Dict
9
+ from .models import CNBBaseModel
10
+ class AuthorizedUser(CNBBaseModel):
11
+ defaultMaxDay: Optional[int] = Field(alias="defaultMaxDay", default=None)
12
+ freeze: Optional[bool] = Field(alias="freeze", default=None)
13
+ headImgUrl: Optional[str] = Field(alias="headImgUrl", default=None)
14
+ maxDaysOptions: Optional[list[int]] = Field(alias="maxDaysOptions", default=None)
15
+ nickName: Optional[str] = Field(alias="nickName", default=None)
16
+ pass
17
+ class LoginState(CNBBaseModel):
18
+ avatar: Optional[str] = Field(alias="avatar", default=None)
19
+ confirmed: Optional[bool] = Field(alias="confirmed", default=None)
20
+ isExpired: Optional[bool] = Field(alias="isExpired", default=None)
21
+ nickName: Optional[str] = Field(alias="nickName", default=None)
22
+ pass
23
+ class LoginTicket(CNBBaseModel):
24
+ state: Optional[str] = Field(alias="state", default=None)
25
+ pass
cnb/organizations.py ADDED
@@ -0,0 +1,192 @@
1
+ # Code generated by cnb.cool/cnb/sdk/cnb-sdk-generator. DO NOT EDIT.
2
+ # versions:
3
+ # cnb-sdk-generator: 1.0.2
4
+ # source: https://api.cnb.cool/swagger.json
5
+
6
+ from typing import Optional
7
+ from .models import dto
8
+ class OrganizationsService:
9
+ def __init__(self, client):
10
+ self._client = client
11
+
12
+ # 创建新组织。Create new organization.
13
+ def create_organization(self,
14
+ body_params: dto.CreateGroupReq,
15
+ ):
16
+ u = "/groups" % ()
17
+
18
+ data = self._client.request(
19
+ method="POST",
20
+ endpoint=u,
21
+ json=body_params.to_dict(),
22
+ )
23
+ return
24
+
25
+ # 删除指定组织。Delete the specified organization.
26
+ def delete_organization(self,
27
+ group: str,
28
+ ):
29
+ u = "/%s" % (group, )
30
+
31
+ data = self._client.request(
32
+ method="DELETE",
33
+ endpoint=u,
34
+ )
35
+ return
36
+
37
+ # 获取指定组织信息。Get information for the specified organization.
38
+ def get_group(self,
39
+ group: str,
40
+ ) -> dto.OrganizationAccess:
41
+ u = "/%s" % (group, )
42
+
43
+ data = self._client.request(
44
+ method="GET",
45
+ endpoint=u,
46
+ )
47
+ return dto.OrganizationAccess.safe_parse(data)
48
+
49
+ # 获取指定组织的配置详情。Get the configuration details for the specified organization.
50
+ def get_group_setting(self,
51
+ group: str,
52
+ ) -> dto.OrganizationSettingWithParent:
53
+ u = "/%s/-/settings" % (group, )
54
+
55
+ data = self._client.request(
56
+ method="GET",
57
+ endpoint=u,
58
+ )
59
+ return dto.OrganizationSettingWithParent.safe_parse(data)
60
+
61
+ # 获取指定用户拥有权限的顶层组织列表。 Get a list of top-level organizations that the specified user has permissions to access.
62
+ def get_groups_by_user_id(self,
63
+ username: str,
64
+ search: Optional[str] = None,
65
+ page: Optional[int] = None,
66
+ page_size: Optional[int] = None,
67
+ desc: Optional[bool] = None,
68
+ order_by: Optional[str] = None,
69
+ ) -> dto.OrganizationUnion:
70
+ u = "/users/%s/groups" % (username, )
71
+
72
+ query_params = {
73
+ "search": search,
74
+ "page": page,
75
+ "page_size": page_size,
76
+ "desc": desc,
77
+ "order_by": order_by,
78
+ }
79
+ data = self._client.request(
80
+ method="GET",
81
+ endpoint=u,
82
+ params=query_params,
83
+ )
84
+ return dto.OrganizationUnion.safe_parse(data)
85
+
86
+ # 查询当前用户在指定组织下拥有指定权限的子组织列表。Get the list of sub-organizations that the current user has access to in the specified organization.
87
+ def list_groups(self,
88
+ group: str,
89
+ page: Optional[int] = None,
90
+ page_size: Optional[int] = None,
91
+ access: Optional[int] = None,
92
+ ) -> list[dto.OrganizationAccess]:
93
+ u = "/user/groups/%s" % (group, )
94
+
95
+ query_params = {
96
+ "page": page,
97
+ "page_size": page_size,
98
+ "access": access,
99
+ }
100
+ data = self._client.request(
101
+ method="GET",
102
+ endpoint=u,
103
+ params=query_params,
104
+ )
105
+ return [dto.OrganizationAccess.safe_parse(item) for item in data]
106
+
107
+ # 获取指定组织下的子组织列表。Get the list of sub-organizations under the specified organization.
108
+ def list_subgroups(self,
109
+ group: str,
110
+ search: Optional[str] = None,
111
+ page: Optional[int] = None,
112
+ page_size: Optional[int] = None,
113
+ ) -> list[dto.OrganizationUnion]:
114
+ u = "/%s/-/sub-groups" % (group, )
115
+
116
+ query_params = {
117
+ "search": search,
118
+ "page": page,
119
+ "page_size": page_size,
120
+ }
121
+ data = self._client.request(
122
+ method="GET",
123
+ endpoint=u,
124
+ params=query_params,
125
+ )
126
+ return [dto.OrganizationUnion.safe_parse(item) for item in data]
127
+
128
+ # 获取当前用户拥有权限的顶层组织列表。Get top-level organizations list that the current user has access to.
129
+ def list_top_groups(self,
130
+ page: Optional[int] = None,
131
+ page_size: Optional[int] = None,
132
+ search: Optional[str] = None,
133
+ role: Optional[str] = None,
134
+ ) -> list[dto.OrganizationAccess]:
135
+ u = "/user/groups" % ()
136
+
137
+ query_params = {
138
+ "page": page,
139
+ "page_size": page_size,
140
+ "search": search,
141
+ "role": role,
142
+ }
143
+ data = self._client.request(
144
+ method="GET",
145
+ endpoint=u,
146
+ params=query_params,
147
+ )
148
+ return [dto.OrganizationAccess.safe_parse(item) for item in data]
149
+
150
+ # 更新组织头像 URL 地址。Updates the organization avatar URL.
151
+ def update_group_avatar(self,
152
+ group: str,
153
+ body_params: dto.UpdateGroupAvatarReq,
154
+ ):
155
+ u = "/%s/-/avatar" % (group, )
156
+
157
+ data = self._client.request(
158
+ method="PUT",
159
+ endpoint=u,
160
+ json=body_params.to_dict(),
161
+ )
162
+ return
163
+
164
+ # 更新指定组织的配置。Updates the configuration for the specified organization.
165
+ def update_group_setting(self,
166
+ group: str,
167
+ body_params: dto.GroupSettingReq,
168
+ ):
169
+ u = "/%s/-/settings" % (group, )
170
+
171
+ data = self._client.request(
172
+ method="PUT",
173
+ endpoint=u,
174
+ json=body_params.to_dict(),
175
+ )
176
+ return
177
+
178
+ # 更新组织信息, 可更新的内容为: 组织描述, 组织展示名称, 组织网站, 组织联系邮箱。Updates organization information including: description, display name, website URL and contact email.
179
+ def update_organization(self,
180
+ group: str,
181
+ body_params: dto.UpdateGroupReq,
182
+ ):
183
+ u = "/%s" % (group, )
184
+
185
+ data = self._client.request(
186
+ method="PUT",
187
+ endpoint=u,
188
+ json=body_params.to_dict(),
189
+ )
190
+ return
191
+
192
+
cnb/pulls.py ADDED
@@ -0,0 +1,242 @@
1
+ # Code generated by cnb.cool/cnb/sdk/cnb-sdk-generator. DO NOT EDIT.
2
+ # versions:
3
+ # cnb-sdk-generator: 1.0.2
4
+ # source: https://api.cnb.cool/swagger.json
5
+
6
+ from typing import Optional
7
+ from .models import api
8
+ class PullsService:
9
+ def __init__(self, client):
10
+ self._client = client
11
+
12
+ # 删除 Pull 标签。Remove a label from a pull.
13
+ def delete_pull_label(self,
14
+ repo: str,
15
+ number: str,
16
+ name: str,
17
+ ) -> api.Label:
18
+ u = "/%s/-/pulls/%s/labels/%s" % (repo, number, name, )
19
+
20
+ data = self._client.request(
21
+ method="DELETE",
22
+ endpoint=u,
23
+ )
24
+ return api.Label.safe_parse(data)
25
+
26
+ # 清空 Pull 标签。Remove all labels from a pull.
27
+ def delete_pull_labels(self,
28
+ repo: str,
29
+ number: str,
30
+ ):
31
+ u = "/%s/-/pulls/%s/labels" % (repo, number, )
32
+
33
+ data = self._client.request(
34
+ method="DELETE",
35
+ endpoint=u,
36
+ )
37
+ return
38
+
39
+ # 查询指定 Pull。Get a pull request.
40
+ def get_pull(self,
41
+ repo: str,
42
+ number: str,
43
+ ) -> api.Pull:
44
+ u = "/%s/-/pulls/%s" % (repo, number, )
45
+
46
+ data = self._client.request(
47
+ method="GET",
48
+ endpoint=u,
49
+ )
50
+ return api.Pull.safe_parse(data)
51
+
52
+ # 查询 Pull Comments 列表。List pull comments requests.
53
+ def list_pull_comments(self,
54
+ repo: str,
55
+ number: str,
56
+ page: Optional[int] = None,
57
+ page_size: Optional[int] = None,
58
+ ) -> list[api.PullRequestComment]:
59
+ u = "/%s/-/pulls/%s/comments" % (repo, number, )
60
+
61
+ query_params = {
62
+ "page": page,
63
+ "page_size": page_size,
64
+ }
65
+ data = self._client.request(
66
+ method="GET",
67
+ endpoint=u,
68
+ params=query_params,
69
+ )
70
+ return [api.PullRequestComment.safe_parse(item) for item in data]
71
+
72
+ # 查询 Pull 的标签(label) 列表。List labels for a pull.
73
+ def list_pull_labels(self,
74
+ repo: str,
75
+ number: str,
76
+ page: Optional[int] = None,
77
+ page_size: Optional[int] = None,
78
+ ) -> list[api.Label]:
79
+ u = "/%s/-/pulls/%s/labels" % (repo, number, )
80
+
81
+ query_params = {
82
+ "page": page,
83
+ "page_size": page_size,
84
+ }
85
+ data = self._client.request(
86
+ method="GET",
87
+ endpoint=u,
88
+ params=query_params,
89
+ )
90
+ return [api.Label.safe_parse(item) for item in data]
91
+
92
+ # 查询 Pull 列表。List pull requests.
93
+ def list_pulls(self,
94
+ repo: str,
95
+ page: Optional[int] = None,
96
+ page_size: Optional[int] = None,
97
+ state: Optional[str] = None,
98
+ authors: Optional[str] = None,
99
+ reviewers: Optional[str] = None,
100
+ assignees: Optional[str] = None,
101
+ base_ref: Optional[str] = None,
102
+ ) -> list[api.PullRequest]:
103
+ u = "/%s/-/pulls" % (repo, )
104
+
105
+ query_params = {
106
+ "page": page,
107
+ "page_size": page_size,
108
+ "state": state,
109
+ "authors": authors,
110
+ "reviewers": reviewers,
111
+ "assignees": assignees,
112
+ "base_ref": base_ref,
113
+ }
114
+ data = self._client.request(
115
+ method="GET",
116
+ endpoint=u,
117
+ params=query_params,
118
+ )
119
+ return [api.PullRequest.safe_parse(item) for item in data]
120
+
121
+ # 根据numbers查询 Pull 列表。List pull requests by numbers.
122
+ def list_pulls_by_numbers(self,
123
+ repo: str,
124
+ n: Optional[list[str]] = None,
125
+ ) -> list[api.PullRequestInfo]:
126
+ u = "/%s/-/pull-in-batch" % (repo, )
127
+
128
+ query_params = {
129
+ "n": n,
130
+ }
131
+ data = self._client.request(
132
+ method="GET",
133
+ endpoint=u,
134
+ params=query_params,
135
+ )
136
+ return [api.PullRequestInfo.safe_parse(item) for item in data]
137
+
138
+ # 合并一个 Pull Request。Merge a pull request.
139
+ def merge_pull(self,
140
+ repo: str,
141
+ number: str,
142
+ body_params: api.MergePullRequest,
143
+ ) -> api.MergePullResponse:
144
+ u = "/%s/-/pulls/%s/merge" % (repo, number, )
145
+
146
+ data = self._client.request(
147
+ method="PUT",
148
+ endpoint=u,
149
+ json=body_params.to_dict(),
150
+ )
151
+ return api.MergePullResponse.safe_parse(data)
152
+
153
+ # 更新一个 Pull Request。Update a pull request.
154
+ def patch_pull(self,
155
+ repo: str,
156
+ number: str,
157
+ body_params: api.PatchPullRequest,
158
+ ) -> api.Pull:
159
+ u = "/%s/-/pulls/%s" % (repo, number, )
160
+
161
+ data = self._client.request(
162
+ method="PATCH",
163
+ endpoint=u,
164
+ json=body_params.to_dict(),
165
+ )
166
+ return api.Pull.safe_parse(data)
167
+
168
+ # 新增一个 Pull。Create a pull request.
169
+ def post_pull(self,
170
+ repo: str,
171
+ body_params: api.PullCreationForm,
172
+ ) -> api.Pull:
173
+ u = "/%s/-/pulls" % (repo, )
174
+
175
+ data = self._client.request(
176
+ method="POST",
177
+ endpoint=u,
178
+ json=body_params.to_dict(),
179
+ )
180
+ return api.Pull.safe_parse(data)
181
+
182
+ # 新增一个 Pull Comment。Create a pull comment.
183
+ def post_pull_comment(self,
184
+ repo: str,
185
+ number: str,
186
+ body_params: api.PullCommentCreationForm,
187
+ ):
188
+ u = "/%s/-/pulls/%s/comments" % (repo, number, )
189
+
190
+ data = self._client.request(
191
+ method="POST",
192
+ endpoint=u,
193
+ json=body_params.to_dict(),
194
+ )
195
+ return
196
+
197
+ # 新增 Pull 标签。Add labels to a pull.
198
+ def post_pull_labels(self,
199
+ repo: str,
200
+ number: str,
201
+ body_params: api.PostPullLabelsForm,
202
+ ) -> api.Label:
203
+ u = "/%s/-/pulls/%s/labels" % (repo, number, )
204
+
205
+ data = self._client.request(
206
+ method="POST",
207
+ endpoint=u,
208
+ json=body_params.to_dict(),
209
+ )
210
+ return api.Label.safe_parse(data)
211
+
212
+ # 新增一次 pull request 评审。Create a pull review.
213
+ def post_pull_review(self,
214
+ repo: str,
215
+ number: str,
216
+ body_params: api.PullReviewCreationForm,
217
+ ):
218
+ u = "/%s/-/pulls/%s/reviews" % (repo, number, )
219
+
220
+ data = self._client.request(
221
+ method="POST",
222
+ endpoint=u,
223
+ json=body_params.to_dict(),
224
+ )
225
+ return
226
+
227
+ # 设置 Pull 标签。Set the new labels for a pull.
228
+ def put_pull_labels(self,
229
+ repo: str,
230
+ number: str,
231
+ body_params: api.PutPullLabelsForm,
232
+ ) -> api.Label:
233
+ u = "/%s/-/pulls/%s/labels" % (repo, number, )
234
+
235
+ data = self._client.request(
236
+ method="PUT",
237
+ endpoint=u,
238
+ json=body_params.to_dict(),
239
+ )
240
+ return api.Label.safe_parse(data)
241
+
242
+