gitcode-api 1.0.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.
- gitcode_api/__init__.py +23 -0
- gitcode_api/_base_client.py +324 -0
- gitcode_api/_client.py +235 -0
- gitcode_api/_exceptions.py +39 -0
- gitcode_api/_models.py +272 -0
- gitcode_api/resources/__init__.py +77 -0
- gitcode_api/resources/_shared.py +75 -0
- gitcode_api/resources/account.py +766 -0
- gitcode_api/resources/collaboration.py +1451 -0
- gitcode_api/resources/misc.py +301 -0
- gitcode_api/resources/repositories.py +1458 -0
- gitcode_api-1.0.0.dist-info/METADATA +208 -0
- gitcode_api-1.0.0.dist-info/RECORD +16 -0
- gitcode_api-1.0.0.dist-info/WHEEL +5 -0
- gitcode_api-1.0.0.dist-info/licenses/LICENSE +21 -0
- gitcode_api-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"""Release, tag, and webhook resource groups."""
|
|
2
|
+
|
|
3
|
+
from typing import Any, List
|
|
4
|
+
|
|
5
|
+
from .._models import ProtectedTag, Release, Tag, Webhook
|
|
6
|
+
from ._shared import AsyncResource, SyncResource
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ReleasesResource(SyncResource):
|
|
10
|
+
"""Synchronous release endpoints."""
|
|
11
|
+
|
|
12
|
+
def update(
|
|
13
|
+
self,
|
|
14
|
+
*,
|
|
15
|
+
release_id: int | str,
|
|
16
|
+
tag_name: str,
|
|
17
|
+
name: str,
|
|
18
|
+
body: str,
|
|
19
|
+
owner: str | None = None,
|
|
20
|
+
repo: str | None = None,
|
|
21
|
+
) -> Release:
|
|
22
|
+
"""Update a repository release.
|
|
23
|
+
|
|
24
|
+
:param release_id: Release identifier.
|
|
25
|
+
:param tag_name: Tag name for the release.
|
|
26
|
+
:param name: Release name.
|
|
27
|
+
:param body: Release description.
|
|
28
|
+
:param owner: Repository owner path. Uses the client default when omitted.
|
|
29
|
+
:param repo: Repository name. Uses the client default when omitted.
|
|
30
|
+
:returns: Updated release payload.
|
|
31
|
+
"""
|
|
32
|
+
return self._model(
|
|
33
|
+
"PATCH",
|
|
34
|
+
self._client._repo_path("releases", release_id, owner=owner, repo=repo),
|
|
35
|
+
Release,
|
|
36
|
+
json={"tag_name": tag_name, "name": name, "body": body},
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
def get_by_tag(self, *, tag: str, owner: str | None = None, repo: str | None = None) -> Release:
|
|
40
|
+
"""Get a repository release by tag name."""
|
|
41
|
+
return self._model(
|
|
42
|
+
"GET",
|
|
43
|
+
self._client._repo_path("releases", "tags", tag, owner=owner, repo=repo),
|
|
44
|
+
Release,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
def list(self, *, owner: str | None = None, repo: str | None = None) -> List[Release]:
|
|
48
|
+
"""List releases for a repository."""
|
|
49
|
+
return self._models("GET", self._client._repo_path("releases", owner=owner, repo=repo), Release)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class TagsResource(SyncResource):
|
|
53
|
+
"""Synchronous tag endpoints."""
|
|
54
|
+
|
|
55
|
+
def list(
|
|
56
|
+
self, *, owner: str | None = None, repo: str | None = None, page: int | None = None, per_page: int | None = None
|
|
57
|
+
) -> List[Tag]:
|
|
58
|
+
"""List tags for a repository."""
|
|
59
|
+
return self._models(
|
|
60
|
+
"GET",
|
|
61
|
+
self._client._repo_path("tags", owner=owner, repo=repo),
|
|
62
|
+
Tag,
|
|
63
|
+
params={"page": page, "per_page": per_page},
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def create(
|
|
67
|
+
self,
|
|
68
|
+
*,
|
|
69
|
+
refs: str,
|
|
70
|
+
tag_name: str,
|
|
71
|
+
owner: str | None = None,
|
|
72
|
+
repo: str | None = None,
|
|
73
|
+
tag_message: str | None = None,
|
|
74
|
+
) -> Tag:
|
|
75
|
+
"""Create a tag for a repository."""
|
|
76
|
+
return self._model(
|
|
77
|
+
"POST",
|
|
78
|
+
self._client._repo_path("tags", owner=owner, repo=repo),
|
|
79
|
+
Tag,
|
|
80
|
+
json={"refs": refs, "tag_name": tag_name, "tag_message": tag_message},
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
def list_protected(
|
|
84
|
+
self, *, owner: str | None = None, repo: str | None = None, page: int | None = None, per_page: int | None = None
|
|
85
|
+
) -> List[ProtectedTag]:
|
|
86
|
+
"""List protected tags for a repository."""
|
|
87
|
+
return self._models(
|
|
88
|
+
"GET",
|
|
89
|
+
self._client._repo_path("protected_tags", owner=owner, repo=repo),
|
|
90
|
+
ProtectedTag,
|
|
91
|
+
params={"page": page, "per_page": per_page},
|
|
92
|
+
)
|
|
93
|
+
|
|
94
|
+
def delete_protected(self, *, tag_name: str, owner: str | None = None, repo: str | None = None) -> None:
|
|
95
|
+
"""Delete a protected tag rule."""
|
|
96
|
+
self._request("DELETE", self._client._repo_path("protected_tags", tag_name, owner=owner, repo=repo))
|
|
97
|
+
|
|
98
|
+
def get_protected(self, *, tag_name: str, owner: str | None = None, repo: str | None = None) -> ProtectedTag:
|
|
99
|
+
"""Get details for a protected tag rule."""
|
|
100
|
+
return self._model(
|
|
101
|
+
"GET",
|
|
102
|
+
self._client._repo_path("protected_tags", tag_name, owner=owner, repo=repo),
|
|
103
|
+
ProtectedTag,
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
def create_protected(
|
|
107
|
+
self, *, name: str, owner: str | None = None, repo: str | None = None, create_access_level: int | None = None
|
|
108
|
+
) -> ProtectedTag:
|
|
109
|
+
"""Create a protected tag rule."""
|
|
110
|
+
return self._model(
|
|
111
|
+
"POST",
|
|
112
|
+
self._client._repo_path("protected_tags", owner=owner, repo=repo),
|
|
113
|
+
ProtectedTag,
|
|
114
|
+
json={"name": name, "create_access_level": create_access_level},
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
def update_protected(
|
|
118
|
+
self, *, name: str, create_access_level: int, owner: str | None = None, repo: str | None = None
|
|
119
|
+
) -> ProtectedTag:
|
|
120
|
+
"""Update a protected tag rule."""
|
|
121
|
+
return self._model(
|
|
122
|
+
"PUT",
|
|
123
|
+
self._client._repo_path("protected_tags", owner=owner, repo=repo),
|
|
124
|
+
ProtectedTag,
|
|
125
|
+
json={"name": name, "create_access_level": create_access_level},
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
class WebhooksResource(SyncResource):
|
|
130
|
+
"""Synchronous webhook endpoints."""
|
|
131
|
+
|
|
132
|
+
def list(
|
|
133
|
+
self, *, owner: str | None = None, repo: str | None = None, page: int | None = None, per_page: int | None = None
|
|
134
|
+
) -> List[Webhook]:
|
|
135
|
+
"""List webhooks for a repository."""
|
|
136
|
+
return self._models(
|
|
137
|
+
"GET",
|
|
138
|
+
self._client._repo_path("hooks", owner=owner, repo=repo),
|
|
139
|
+
Webhook,
|
|
140
|
+
params={"page": page, "per_page": per_page},
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
def create(self, *, url: str, owner: str | None = None, repo: str | None = None, **payload: Any) -> Webhook:
|
|
144
|
+
"""Create a repository webhook."""
|
|
145
|
+
payload["url"] = url
|
|
146
|
+
return self._model("POST", self._client._repo_path("hooks", owner=owner, repo=repo), Webhook, json=payload)
|
|
147
|
+
|
|
148
|
+
def get(self, *, hook_id: int | str, owner: str | None = None, repo: str | None = None) -> Webhook:
|
|
149
|
+
"""Get a repository webhook by identifier."""
|
|
150
|
+
return self._model("GET", self._client._repo_path("hooks", hook_id, owner=owner, repo=repo), Webhook)
|
|
151
|
+
|
|
152
|
+
def update(
|
|
153
|
+
self, *, hook_id: int | str, url: str, owner: str | None = None, repo: str | None = None, **payload: Any
|
|
154
|
+
) -> Webhook:
|
|
155
|
+
"""Update a repository webhook."""
|
|
156
|
+
payload["url"] = url
|
|
157
|
+
return self._model(
|
|
158
|
+
"PATCH", self._client._repo_path("hooks", hook_id, owner=owner, repo=repo), Webhook, json=payload
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
def delete(self, *, hook_id: int | str, owner: str | None = None, repo: str | None = None) -> None:
|
|
162
|
+
"""Delete a repository webhook."""
|
|
163
|
+
self._request("DELETE", self._client._repo_path("hooks", hook_id, owner=owner, repo=repo))
|
|
164
|
+
|
|
165
|
+
def test(self, *, hook_id: int | str, owner: str | None = None, repo: str | None = None) -> None:
|
|
166
|
+
"""Send a test delivery for a repository webhook."""
|
|
167
|
+
self._request("POST", self._client._repo_path("hooks", hook_id, "tests", owner=owner, repo=repo))
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
class AsyncReleasesResource(AsyncResource):
|
|
171
|
+
"""Asynchronous release endpoints."""
|
|
172
|
+
|
|
173
|
+
async def update(
|
|
174
|
+
self,
|
|
175
|
+
*,
|
|
176
|
+
release_id: int | str,
|
|
177
|
+
tag_name: str,
|
|
178
|
+
name: str,
|
|
179
|
+
body: str,
|
|
180
|
+
owner: str | None = None,
|
|
181
|
+
repo: str | None = None,
|
|
182
|
+
) -> Release:
|
|
183
|
+
return await self._model(
|
|
184
|
+
"PATCH",
|
|
185
|
+
self._client._repo_path("releases", release_id, owner=owner, repo=repo),
|
|
186
|
+
Release,
|
|
187
|
+
json={"tag_name": tag_name, "name": name, "body": body},
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
async def get_by_tag(self, *, tag: str, owner: str | None = None, repo: str | None = None) -> Release:
|
|
191
|
+
return await self._model(
|
|
192
|
+
"GET", self._client._repo_path("releases", "tags", tag, owner=owner, repo=repo), Release
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
async def list(self, *, owner: str | None = None, repo: str | None = None) -> List[Release]:
|
|
196
|
+
return await self._models("GET", self._client._repo_path("releases", owner=owner, repo=repo), Release)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
class AsyncTagsResource(AsyncResource):
|
|
200
|
+
"""Asynchronous tag endpoints."""
|
|
201
|
+
|
|
202
|
+
async def list(
|
|
203
|
+
self, *, owner: str | None = None, repo: str | None = None, page: int | None = None, per_page: int | None = None
|
|
204
|
+
) -> List[Tag]:
|
|
205
|
+
return await self._models(
|
|
206
|
+
"GET",
|
|
207
|
+
self._client._repo_path("tags", owner=owner, repo=repo),
|
|
208
|
+
Tag,
|
|
209
|
+
params={"page": page, "per_page": per_page},
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
async def create(
|
|
213
|
+
self,
|
|
214
|
+
*,
|
|
215
|
+
refs: str,
|
|
216
|
+
tag_name: str,
|
|
217
|
+
owner: str | None = None,
|
|
218
|
+
repo: str | None = None,
|
|
219
|
+
tag_message: str | None = None,
|
|
220
|
+
) -> Tag:
|
|
221
|
+
return await self._model(
|
|
222
|
+
"POST",
|
|
223
|
+
self._client._repo_path("tags", owner=owner, repo=repo),
|
|
224
|
+
Tag,
|
|
225
|
+
json={"refs": refs, "tag_name": tag_name, "tag_message": tag_message},
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
async def list_protected(
|
|
229
|
+
self, *, owner: str | None = None, repo: str | None = None, page: int | None = None, per_page: int | None = None
|
|
230
|
+
) -> List[ProtectedTag]:
|
|
231
|
+
return await self._models(
|
|
232
|
+
"GET",
|
|
233
|
+
self._client._repo_path("protected_tags", owner=owner, repo=repo),
|
|
234
|
+
ProtectedTag,
|
|
235
|
+
params={"page": page, "per_page": per_page},
|
|
236
|
+
)
|
|
237
|
+
|
|
238
|
+
async def delete_protected(self, *, tag_name: str, owner: str | None = None, repo: str | None = None) -> None:
|
|
239
|
+
await self._request("DELETE", self._client._repo_path("protected_tags", tag_name, owner=owner, repo=repo))
|
|
240
|
+
|
|
241
|
+
async def get_protected(self, *, tag_name: str, owner: str | None = None, repo: str | None = None) -> ProtectedTag:
|
|
242
|
+
return await self._model(
|
|
243
|
+
"GET", self._client._repo_path("protected_tags", tag_name, owner=owner, repo=repo), ProtectedTag
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
async def create_protected(
|
|
247
|
+
self, *, name: str, owner: str | None = None, repo: str | None = None, create_access_level: int | None = None
|
|
248
|
+
) -> ProtectedTag:
|
|
249
|
+
return await self._model(
|
|
250
|
+
"POST",
|
|
251
|
+
self._client._repo_path("protected_tags", owner=owner, repo=repo),
|
|
252
|
+
ProtectedTag,
|
|
253
|
+
json={"name": name, "create_access_level": create_access_level},
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
async def update_protected(
|
|
257
|
+
self, *, name: str, create_access_level: int, owner: str | None = None, repo: str | None = None
|
|
258
|
+
) -> ProtectedTag:
|
|
259
|
+
return await self._model(
|
|
260
|
+
"PUT",
|
|
261
|
+
self._client._repo_path("protected_tags", owner=owner, repo=repo),
|
|
262
|
+
ProtectedTag,
|
|
263
|
+
json={"name": name, "create_access_level": create_access_level},
|
|
264
|
+
)
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
class AsyncWebhooksResource(AsyncResource):
|
|
268
|
+
"""Asynchronous webhook endpoints."""
|
|
269
|
+
|
|
270
|
+
async def list(
|
|
271
|
+
self, *, owner: str | None = None, repo: str | None = None, page: int | None = None, per_page: int | None = None
|
|
272
|
+
) -> List[Webhook]:
|
|
273
|
+
return await self._models(
|
|
274
|
+
"GET",
|
|
275
|
+
self._client._repo_path("hooks", owner=owner, repo=repo),
|
|
276
|
+
Webhook,
|
|
277
|
+
params={"page": page, "per_page": per_page},
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
async def create(self, *, url: str, owner: str | None = None, repo: str | None = None, **payload: Any) -> Webhook:
|
|
281
|
+
payload["url"] = url
|
|
282
|
+
return await self._model(
|
|
283
|
+
"POST", self._client._repo_path("hooks", owner=owner, repo=repo), Webhook, json=payload
|
|
284
|
+
)
|
|
285
|
+
|
|
286
|
+
async def get(self, *, hook_id: int | str, owner: str | None = None, repo: str | None = None) -> Webhook:
|
|
287
|
+
return await self._model("GET", self._client._repo_path("hooks", hook_id, owner=owner, repo=repo), Webhook)
|
|
288
|
+
|
|
289
|
+
async def update(
|
|
290
|
+
self, *, hook_id: int | str, url: str, owner: str | None = None, repo: str | None = None, **payload: Any
|
|
291
|
+
) -> Webhook:
|
|
292
|
+
payload["url"] = url
|
|
293
|
+
return await self._model(
|
|
294
|
+
"PATCH", self._client._repo_path("hooks", hook_id, owner=owner, repo=repo), Webhook, json=payload
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
async def delete(self, *, hook_id: int | str, owner: str | None = None, repo: str | None = None) -> None:
|
|
298
|
+
await self._request("DELETE", self._client._repo_path("hooks", hook_id, owner=owner, repo=repo))
|
|
299
|
+
|
|
300
|
+
async def test(self, *, hook_id: int | str, owner: str | None = None, repo: str | None = None) -> None:
|
|
301
|
+
await self._request("POST", self._client._repo_path("hooks", hook_id, "tests", owner=owner, repo=repo))
|