gitcode-api 1.3.1__py3-none-any.whl → 1.3.2__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/resources/account/users_resource_group.py +65 -9
- gitcode_api/resources/collaboration/issues_resource_group.py +333 -26
- gitcode_api/resources/collaboration/milestones_resource_group.py +64 -6
- gitcode_api/resources/collaboration/pulls_resource_group.py +271 -29
- gitcode_api/resources/repositories/repos_resource_group.py +30 -6
- gitcode_api/version.txt +1 -1
- {gitcode_api-1.3.1.dist-info → gitcode_api-1.3.2.dist-info}/METADATA +2 -2
- {gitcode_api-1.3.1.dist-info → gitcode_api-1.3.2.dist-info}/RECORD +12 -12
- {gitcode_api-1.3.1.dist-info → gitcode_api-1.3.2.dist-info}/WHEEL +0 -0
- {gitcode_api-1.3.1.dist-info → gitcode_api-1.3.2.dist-info}/entry_points.txt +0 -0
- {gitcode_api-1.3.1.dist-info → gitcode_api-1.3.2.dist-info}/licenses/LICENSE +0 -0
- {gitcode_api-1.3.1.dist-info → gitcode_api-1.3.2.dist-info}/top_level.txt +0 -0
|
@@ -56,14 +56,26 @@ class AbstractUsersResource(ABC):
|
|
|
56
56
|
"""
|
|
57
57
|
|
|
58
58
|
@abstractmethod
|
|
59
|
-
def list_repos(
|
|
59
|
+
def list_repos(
|
|
60
|
+
self,
|
|
61
|
+
*,
|
|
62
|
+
username: str,
|
|
63
|
+
type: Optional[str] = None,
|
|
64
|
+
sort: Optional[str] = None,
|
|
65
|
+
direction: Optional[str] = None,
|
|
66
|
+
page: Optional[int] = None,
|
|
67
|
+
per_page: Optional[int] = None,
|
|
68
|
+
**kwargs,
|
|
69
|
+
) -> List[Repository]:
|
|
60
70
|
"""List public repositories owned by a user.
|
|
61
71
|
|
|
62
|
-
Supported filters follow the user repository API documentation, such as
|
|
63
|
-
``type``, ``sort``, ``direction``, ``page``, and ``per_page``.
|
|
64
|
-
|
|
65
72
|
:param username: GitCode username or login.
|
|
66
|
-
:param
|
|
73
|
+
:param type: Ownership filter: ``owner``, ``personal``, ``member``, or ``all``. Default: ``all``.
|
|
74
|
+
:param sort: Sort field: ``created``, ``updated``, ``pushed``, or ``full_name``. Default: ``full_name``.
|
|
75
|
+
:param direction: ``asc`` or ``desc``.
|
|
76
|
+
:param page: Page number.
|
|
77
|
+
:param per_page: Page size.
|
|
78
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
67
79
|
:returns: Matching repositories.
|
|
68
80
|
"""
|
|
69
81
|
|
|
@@ -149,8 +161,30 @@ class UsersResource(SyncResource, AbstractUsersResource):
|
|
|
149
161
|
params={"year": year, "next": next},
|
|
150
162
|
)
|
|
151
163
|
|
|
152
|
-
def list_repos(
|
|
153
|
-
|
|
164
|
+
def list_repos(
|
|
165
|
+
self,
|
|
166
|
+
*,
|
|
167
|
+
username: str,
|
|
168
|
+
type: Optional[str] = None,
|
|
169
|
+
sort: Optional[str] = None,
|
|
170
|
+
direction: Optional[str] = None,
|
|
171
|
+
page: Optional[int] = None,
|
|
172
|
+
per_page: Optional[int] = None,
|
|
173
|
+
**kwargs,
|
|
174
|
+
) -> List[Repository]:
|
|
175
|
+
return self._models(
|
|
176
|
+
"GET",
|
|
177
|
+
self._client._path("users", username, "repos"),
|
|
178
|
+
Repository,
|
|
179
|
+
params={
|
|
180
|
+
"type": type,
|
|
181
|
+
"sort": sort,
|
|
182
|
+
"direction": direction,
|
|
183
|
+
"page": page,
|
|
184
|
+
"per_page": per_page,
|
|
185
|
+
**kwargs,
|
|
186
|
+
},
|
|
187
|
+
)
|
|
154
188
|
|
|
155
189
|
def create_key(self, *, key: str, title: str) -> PublicKey:
|
|
156
190
|
return self._model("POST", self._client._path("user", "keys"), PublicKey, json={"key": key, "title": title})
|
|
@@ -210,8 +244,30 @@ class AsyncUsersResource(AsyncResource, AbstractUsersResource):
|
|
|
210
244
|
params={"year": year, "next": next},
|
|
211
245
|
)
|
|
212
246
|
|
|
213
|
-
async def list_repos(
|
|
214
|
-
|
|
247
|
+
async def list_repos(
|
|
248
|
+
self,
|
|
249
|
+
*,
|
|
250
|
+
username: str,
|
|
251
|
+
type: Optional[str] = None,
|
|
252
|
+
sort: Optional[str] = None,
|
|
253
|
+
direction: Optional[str] = None,
|
|
254
|
+
page: Optional[int] = None,
|
|
255
|
+
per_page: Optional[int] = None,
|
|
256
|
+
**kwargs,
|
|
257
|
+
) -> List[Repository]:
|
|
258
|
+
return await self._models(
|
|
259
|
+
"GET",
|
|
260
|
+
self._client._path("users", username, "repos"),
|
|
261
|
+
Repository,
|
|
262
|
+
params={
|
|
263
|
+
"type": type,
|
|
264
|
+
"sort": sort,
|
|
265
|
+
"direction": direction,
|
|
266
|
+
"page": page,
|
|
267
|
+
"per_page": per_page,
|
|
268
|
+
**kwargs,
|
|
269
|
+
},
|
|
270
|
+
)
|
|
215
271
|
|
|
216
272
|
async def create_key(self, *, key: str, title: str) -> PublicKey:
|
|
217
273
|
return await self._model(
|
|
@@ -91,7 +91,7 @@ class AbstractIssuesResource(ABC):
|
|
|
91
91
|
:param security_hole: Whether the issue is private; form field described in the Issues API (default public).
|
|
92
92
|
:param template_path: issue template path, project templates support files under the .gitcode, .github, .gitee
|
|
93
93
|
directories, and organization templates only support files under the .gitcode directory of .gitcode repo.
|
|
94
|
-
:param kwargs:
|
|
94
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
95
95
|
:returns: Created issue details.
|
|
96
96
|
"""
|
|
97
97
|
|
|
@@ -246,28 +246,108 @@ class AbstractIssuesResource(ABC):
|
|
|
246
246
|
"""
|
|
247
247
|
|
|
248
248
|
@abstractmethod
|
|
249
|
-
def list_enterprise(
|
|
249
|
+
def list_enterprise(
|
|
250
|
+
self,
|
|
251
|
+
*,
|
|
252
|
+
enterprise: str,
|
|
253
|
+
state: Optional[str] = None,
|
|
254
|
+
labels: Optional[str] = None,
|
|
255
|
+
sort: Optional[str] = None,
|
|
256
|
+
direction: Optional[str] = None,
|
|
257
|
+
since: Optional[str] = None,
|
|
258
|
+
page: Optional[int] = None,
|
|
259
|
+
per_page: Optional[int] = None,
|
|
260
|
+
milestone: Optional[str] = None,
|
|
261
|
+
assignee: Optional[str] = None,
|
|
262
|
+
creator: Optional[str] = None,
|
|
263
|
+
program: Optional[str] = None,
|
|
264
|
+
created_at: Optional[str] = None,
|
|
265
|
+
created_before: Optional[str] = None,
|
|
266
|
+
**kwargs,
|
|
267
|
+
) -> List[Issue]:
|
|
250
268
|
"""List enterprise issues visible to the caller.
|
|
251
269
|
|
|
252
270
|
:param enterprise: Enterprise path or login.
|
|
253
|
-
:param
|
|
271
|
+
:param state: Issue state: ``open``, ``closed``, or ``all``. Default: ``open``.
|
|
272
|
+
:param labels: Comma-separated list of label names.
|
|
273
|
+
:param sort: Sort field: ``created`` or ``updated_at``. Default: ``created_at``.
|
|
274
|
+
:param direction: ``asc`` or ``desc``. Default: ``desc``.
|
|
275
|
+
:param since: Return issues updated since this timestamp.
|
|
276
|
+
:param page: Page number.
|
|
277
|
+
:param per_page: Page size.
|
|
278
|
+
:param milestone: Milestone name (``none`` for no milestone, ``*`` for any).
|
|
279
|
+
:param assignee: Assignee username (``none`` for unassigned, ``*`` for any).
|
|
280
|
+
:param creator: Creator username filter.
|
|
281
|
+
:param program: Project name (``none`` for unassociated, ``*`` for any).
|
|
282
|
+
:param created_at: Created-at timestamp filter.
|
|
283
|
+
:param created_before: Return issues created before this timestamp.
|
|
284
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
254
285
|
:returns: Enterprise-scoped issues.
|
|
255
286
|
"""
|
|
256
287
|
|
|
257
288
|
@abstractmethod
|
|
258
|
-
def list_user(
|
|
289
|
+
def list_user(
|
|
290
|
+
self,
|
|
291
|
+
*,
|
|
292
|
+
filter: Optional[str] = None,
|
|
293
|
+
state: Optional[str] = None,
|
|
294
|
+
labels: Optional[str] = None,
|
|
295
|
+
sort: Optional[str] = None,
|
|
296
|
+
direction: Optional[str] = None,
|
|
297
|
+
since: Optional[str] = None,
|
|
298
|
+
page: Optional[int] = None,
|
|
299
|
+
per_page: Optional[int] = None,
|
|
300
|
+
schedule: Optional[str] = None,
|
|
301
|
+
deadline: Optional[str] = None,
|
|
302
|
+
created_at: Optional[str] = None,
|
|
303
|
+
finished_at: Optional[str] = None,
|
|
304
|
+
**kwargs,
|
|
305
|
+
) -> List[Issue]:
|
|
259
306
|
"""List issues for the authenticated user.
|
|
260
307
|
|
|
261
|
-
:param
|
|
308
|
+
:param filter: Filter mode: ``assigned``, ``created``, or ``all``. Default: ``assigned``.
|
|
309
|
+
:param state: Issue state: ``open`` or ``closed``. Default: ``open``.
|
|
310
|
+
:param labels: Comma-separated list of label names.
|
|
311
|
+
:param sort: Sort field: ``created`` or ``updated_at``. Default: ``created_at``.
|
|
312
|
+
:param direction: ``asc`` or ``desc``. Default: ``desc``.
|
|
313
|
+
:param since: Return issues updated since this timestamp.
|
|
314
|
+
:param page: Page number.
|
|
315
|
+
:param per_page: Page size.
|
|
316
|
+
:param schedule: Schedule filter.
|
|
317
|
+
:param deadline: Deadline filter.
|
|
318
|
+
:param created_at: Created-at timestamp filter.
|
|
319
|
+
:param finished_at: Finished-at timestamp filter.
|
|
320
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
262
321
|
:returns: Issues assigned to or authored by the user, per API rules.
|
|
263
322
|
"""
|
|
264
323
|
|
|
265
324
|
@abstractmethod
|
|
266
|
-
def list_org(
|
|
325
|
+
def list_org(
|
|
326
|
+
self,
|
|
327
|
+
*,
|
|
328
|
+
org: str,
|
|
329
|
+
filter: Optional[str] = None,
|
|
330
|
+
state: Optional[str] = None,
|
|
331
|
+
labels: Optional[str] = None,
|
|
332
|
+
sort: Optional[str] = None,
|
|
333
|
+
direction: Optional[str] = None,
|
|
334
|
+
page: Optional[int] = None,
|
|
335
|
+
per_page: Optional[int] = None,
|
|
336
|
+
created_at: Optional[str] = None,
|
|
337
|
+
**kwargs,
|
|
338
|
+
) -> List[Issue]:
|
|
267
339
|
"""List organization issues visible to the current user.
|
|
268
340
|
|
|
269
341
|
:param org: Organization path or login.
|
|
270
|
-
:param
|
|
342
|
+
:param filter: Filter mode: ``assigned``, ``created``, or ``all``. Default: ``assigned``.
|
|
343
|
+
:param state: Issue state: ``open`` or ``closed``. Default: ``open``.
|
|
344
|
+
:param labels: Comma-separated list of label names.
|
|
345
|
+
:param sort: Sort field: ``created`` or ``updated_at``. Default: ``created_at``.
|
|
346
|
+
:param direction: ``asc`` or ``desc``. Default: ``desc``.
|
|
347
|
+
:param page: Page number.
|
|
348
|
+
:param per_page: Page size.
|
|
349
|
+
:param created_at: Created-at timestamp filter.
|
|
350
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
271
351
|
:returns: Organization-scoped issues.
|
|
272
352
|
"""
|
|
273
353
|
|
|
@@ -281,12 +361,22 @@ class AbstractIssuesResource(ABC):
|
|
|
281
361
|
"""
|
|
282
362
|
|
|
283
363
|
@abstractmethod
|
|
284
|
-
def list_enterprise_comments(
|
|
364
|
+
def list_enterprise_comments(
|
|
365
|
+
self,
|
|
366
|
+
*,
|
|
367
|
+
enterprise: str,
|
|
368
|
+
number: Union[int, str],
|
|
369
|
+
page: Optional[int] = None,
|
|
370
|
+
per_page: Optional[int] = None,
|
|
371
|
+
**kwargs,
|
|
372
|
+
) -> List[IssueComment]:
|
|
285
373
|
"""List comments for an enterprise issue.
|
|
286
374
|
|
|
287
375
|
:param enterprise: Enterprise path or login.
|
|
288
376
|
:param number: Enterprise issue identifier in the path.
|
|
289
|
-
:param
|
|
377
|
+
:param page: Page number.
|
|
378
|
+
:param per_page: Page size.
|
|
379
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
290
380
|
:returns: Comments on the enterprise issue.
|
|
291
381
|
"""
|
|
292
382
|
|
|
@@ -422,7 +512,8 @@ class IssuesResource(SyncResource, AbstractIssuesResource):
|
|
|
422
512
|
"milestone": milestone,
|
|
423
513
|
"security_hole": security_hole,
|
|
424
514
|
"template_path": template_path,
|
|
425
|
-
}
|
|
515
|
+
}
|
|
516
|
+
| kwargs,
|
|
426
517
|
)
|
|
427
518
|
|
|
428
519
|
def update(
|
|
@@ -544,24 +635,133 @@ class IssuesResource(SyncResource, AbstractIssuesResource):
|
|
|
544
635
|
) -> None:
|
|
545
636
|
self._request("DELETE", self._client._repo_path("issues", number, "labels", name, owner=owner, repo=repo))
|
|
546
637
|
|
|
547
|
-
def list_enterprise(
|
|
548
|
-
|
|
638
|
+
def list_enterprise(
|
|
639
|
+
self,
|
|
640
|
+
*,
|
|
641
|
+
enterprise: str,
|
|
642
|
+
state: Optional[str] = None,
|
|
643
|
+
labels: Optional[str] = None,
|
|
644
|
+
sort: Optional[str] = None,
|
|
645
|
+
direction: Optional[str] = None,
|
|
646
|
+
since: Optional[str] = None,
|
|
647
|
+
page: Optional[int] = None,
|
|
648
|
+
per_page: Optional[int] = None,
|
|
649
|
+
milestone: Optional[str] = None,
|
|
650
|
+
assignee: Optional[str] = None,
|
|
651
|
+
creator: Optional[str] = None,
|
|
652
|
+
program: Optional[str] = None,
|
|
653
|
+
created_at: Optional[str] = None,
|
|
654
|
+
created_before: Optional[str] = None,
|
|
655
|
+
**kwargs,
|
|
656
|
+
) -> List[Issue]:
|
|
657
|
+
return self._models(
|
|
658
|
+
"GET",
|
|
659
|
+
self._client._path("enterprises", enterprise, "issues"),
|
|
660
|
+
Issue,
|
|
661
|
+
params={
|
|
662
|
+
"state": state,
|
|
663
|
+
"labels": labels,
|
|
664
|
+
"sort": sort,
|
|
665
|
+
"direction": direction,
|
|
666
|
+
"since": since,
|
|
667
|
+
"page": page,
|
|
668
|
+
"per_page": per_page,
|
|
669
|
+
"milestone": milestone,
|
|
670
|
+
"assignee": assignee,
|
|
671
|
+
"creator": creator,
|
|
672
|
+
"program": program,
|
|
673
|
+
"created_at": created_at,
|
|
674
|
+
"created_before": created_before,
|
|
675
|
+
**kwargs,
|
|
676
|
+
},
|
|
677
|
+
)
|
|
549
678
|
|
|
550
|
-
def list_user(
|
|
551
|
-
|
|
679
|
+
def list_user(
|
|
680
|
+
self,
|
|
681
|
+
*,
|
|
682
|
+
filter: Optional[str] = None,
|
|
683
|
+
state: Optional[str] = None,
|
|
684
|
+
labels: Optional[str] = None,
|
|
685
|
+
sort: Optional[str] = None,
|
|
686
|
+
direction: Optional[str] = None,
|
|
687
|
+
since: Optional[str] = None,
|
|
688
|
+
page: Optional[int] = None,
|
|
689
|
+
per_page: Optional[int] = None,
|
|
690
|
+
schedule: Optional[str] = None,
|
|
691
|
+
deadline: Optional[str] = None,
|
|
692
|
+
created_at: Optional[str] = None,
|
|
693
|
+
finished_at: Optional[str] = None,
|
|
694
|
+
**kwargs,
|
|
695
|
+
) -> List[Issue]:
|
|
696
|
+
return self._models(
|
|
697
|
+
"GET",
|
|
698
|
+
self._client._path("user", "issues"),
|
|
699
|
+
Issue,
|
|
700
|
+
params={
|
|
701
|
+
"filter": filter,
|
|
702
|
+
"state": state,
|
|
703
|
+
"labels": labels,
|
|
704
|
+
"sort": sort,
|
|
705
|
+
"direction": direction,
|
|
706
|
+
"since": since,
|
|
707
|
+
"page": page,
|
|
708
|
+
"per_page": per_page,
|
|
709
|
+
"schedule": schedule,
|
|
710
|
+
"deadline": deadline,
|
|
711
|
+
"created_at": created_at,
|
|
712
|
+
"finished_at": finished_at,
|
|
713
|
+
**kwargs,
|
|
714
|
+
},
|
|
715
|
+
)
|
|
552
716
|
|
|
553
|
-
def list_org(
|
|
554
|
-
|
|
717
|
+
def list_org(
|
|
718
|
+
self,
|
|
719
|
+
*,
|
|
720
|
+
org: str,
|
|
721
|
+
filter: Optional[str] = None,
|
|
722
|
+
state: Optional[str] = None,
|
|
723
|
+
labels: Optional[str] = None,
|
|
724
|
+
sort: Optional[str] = None,
|
|
725
|
+
direction: Optional[str] = None,
|
|
726
|
+
page: Optional[int] = None,
|
|
727
|
+
per_page: Optional[int] = None,
|
|
728
|
+
created_at: Optional[str] = None,
|
|
729
|
+
**kwargs,
|
|
730
|
+
) -> List[Issue]:
|
|
731
|
+
return self._models(
|
|
732
|
+
"GET",
|
|
733
|
+
self._client._path("orgs", org, "issues"),
|
|
734
|
+
Issue,
|
|
735
|
+
params={
|
|
736
|
+
"filter": filter,
|
|
737
|
+
"state": state,
|
|
738
|
+
"labels": labels,
|
|
739
|
+
"sort": sort,
|
|
740
|
+
"direction": direction,
|
|
741
|
+
"page": page,
|
|
742
|
+
"per_page": per_page,
|
|
743
|
+
"created_at": created_at,
|
|
744
|
+
**kwargs,
|
|
745
|
+
},
|
|
746
|
+
)
|
|
555
747
|
|
|
556
748
|
def get_enterprise_issue(self, *, enterprise: str, number: Union[int, str]) -> Issue:
|
|
557
749
|
return self._model("GET", self._client._path("enterprises", enterprise, "issues", number), Issue)
|
|
558
750
|
|
|
559
|
-
def list_enterprise_comments(
|
|
751
|
+
def list_enterprise_comments(
|
|
752
|
+
self,
|
|
753
|
+
*,
|
|
754
|
+
enterprise: str,
|
|
755
|
+
number: Union[int, str],
|
|
756
|
+
page: Optional[int] = None,
|
|
757
|
+
per_page: Optional[int] = None,
|
|
758
|
+
**kwargs,
|
|
759
|
+
) -> List[IssueComment]:
|
|
560
760
|
return self._models(
|
|
561
761
|
"GET",
|
|
562
762
|
self._client._path("enterprises", enterprise, "issues", number, "comments"),
|
|
563
763
|
IssueComment,
|
|
564
|
-
params=
|
|
764
|
+
params={"page": page, "per_page": per_page, **kwargs},
|
|
565
765
|
)
|
|
566
766
|
|
|
567
767
|
def list_enterprise_labels(self, *, enterprise: str, issue_id: Union[int, str]) -> List[Label]:
|
|
@@ -785,26 +985,133 @@ class AsyncIssuesResource(AsyncResource, AbstractIssuesResource):
|
|
|
785
985
|
) -> None:
|
|
786
986
|
await self._request("DELETE", self._client._repo_path("issues", number, "labels", name, owner=owner, repo=repo))
|
|
787
987
|
|
|
788
|
-
async def list_enterprise(
|
|
789
|
-
|
|
988
|
+
async def list_enterprise(
|
|
989
|
+
self,
|
|
990
|
+
*,
|
|
991
|
+
enterprise: str,
|
|
992
|
+
state: Optional[str] = None,
|
|
993
|
+
labels: Optional[str] = None,
|
|
994
|
+
sort: Optional[str] = None,
|
|
995
|
+
direction: Optional[str] = None,
|
|
996
|
+
since: Optional[str] = None,
|
|
997
|
+
page: Optional[int] = None,
|
|
998
|
+
per_page: Optional[int] = None,
|
|
999
|
+
milestone: Optional[str] = None,
|
|
1000
|
+
assignee: Optional[str] = None,
|
|
1001
|
+
creator: Optional[str] = None,
|
|
1002
|
+
program: Optional[str] = None,
|
|
1003
|
+
created_at: Optional[str] = None,
|
|
1004
|
+
created_before: Optional[str] = None,
|
|
1005
|
+
**kwargs,
|
|
1006
|
+
) -> List[Issue]:
|
|
1007
|
+
return await self._models(
|
|
1008
|
+
"GET",
|
|
1009
|
+
self._client._path("enterprises", enterprise, "issues"),
|
|
1010
|
+
Issue,
|
|
1011
|
+
params={
|
|
1012
|
+
"state": state,
|
|
1013
|
+
"labels": labels,
|
|
1014
|
+
"sort": sort,
|
|
1015
|
+
"direction": direction,
|
|
1016
|
+
"since": since,
|
|
1017
|
+
"page": page,
|
|
1018
|
+
"per_page": per_page,
|
|
1019
|
+
"milestone": milestone,
|
|
1020
|
+
"assignee": assignee,
|
|
1021
|
+
"creator": creator,
|
|
1022
|
+
"program": program,
|
|
1023
|
+
"created_at": created_at,
|
|
1024
|
+
"created_before": created_before,
|
|
1025
|
+
**kwargs,
|
|
1026
|
+
},
|
|
1027
|
+
)
|
|
790
1028
|
|
|
791
|
-
async def list_user(
|
|
792
|
-
|
|
1029
|
+
async def list_user(
|
|
1030
|
+
self,
|
|
1031
|
+
*,
|
|
1032
|
+
filter: Optional[str] = None,
|
|
1033
|
+
state: Optional[str] = None,
|
|
1034
|
+
labels: Optional[str] = None,
|
|
1035
|
+
sort: Optional[str] = None,
|
|
1036
|
+
direction: Optional[str] = None,
|
|
1037
|
+
since: Optional[str] = None,
|
|
1038
|
+
page: Optional[int] = None,
|
|
1039
|
+
per_page: Optional[int] = None,
|
|
1040
|
+
schedule: Optional[str] = None,
|
|
1041
|
+
deadline: Optional[str] = None,
|
|
1042
|
+
created_at: Optional[str] = None,
|
|
1043
|
+
finished_at: Optional[str] = None,
|
|
1044
|
+
**kwargs,
|
|
1045
|
+
) -> List[Issue]:
|
|
1046
|
+
return await self._models(
|
|
1047
|
+
"GET",
|
|
1048
|
+
self._client._path("user", "issues"),
|
|
1049
|
+
Issue,
|
|
1050
|
+
params={
|
|
1051
|
+
"filter": filter,
|
|
1052
|
+
"state": state,
|
|
1053
|
+
"labels": labels,
|
|
1054
|
+
"sort": sort,
|
|
1055
|
+
"direction": direction,
|
|
1056
|
+
"since": since,
|
|
1057
|
+
"page": page,
|
|
1058
|
+
"per_page": per_page,
|
|
1059
|
+
"schedule": schedule,
|
|
1060
|
+
"deadline": deadline,
|
|
1061
|
+
"created_at": created_at,
|
|
1062
|
+
"finished_at": finished_at,
|
|
1063
|
+
**kwargs,
|
|
1064
|
+
},
|
|
1065
|
+
)
|
|
793
1066
|
|
|
794
|
-
async def list_org(
|
|
795
|
-
|
|
1067
|
+
async def list_org(
|
|
1068
|
+
self,
|
|
1069
|
+
*,
|
|
1070
|
+
org: str,
|
|
1071
|
+
filter: Optional[str] = None,
|
|
1072
|
+
state: Optional[str] = None,
|
|
1073
|
+
labels: Optional[str] = None,
|
|
1074
|
+
sort: Optional[str] = None,
|
|
1075
|
+
direction: Optional[str] = None,
|
|
1076
|
+
page: Optional[int] = None,
|
|
1077
|
+
per_page: Optional[int] = None,
|
|
1078
|
+
created_at: Optional[str] = None,
|
|
1079
|
+
**kwargs,
|
|
1080
|
+
) -> List[Issue]:
|
|
1081
|
+
return await self._models(
|
|
1082
|
+
"GET",
|
|
1083
|
+
self._client._path("orgs", org, "issues"),
|
|
1084
|
+
Issue,
|
|
1085
|
+
params={
|
|
1086
|
+
"filter": filter,
|
|
1087
|
+
"state": state,
|
|
1088
|
+
"labels": labels,
|
|
1089
|
+
"sort": sort,
|
|
1090
|
+
"direction": direction,
|
|
1091
|
+
"page": page,
|
|
1092
|
+
"per_page": per_page,
|
|
1093
|
+
"created_at": created_at,
|
|
1094
|
+
**kwargs,
|
|
1095
|
+
},
|
|
1096
|
+
)
|
|
796
1097
|
|
|
797
1098
|
async def get_enterprise_issue(self, *, enterprise: str, number: Union[int, str]) -> Issue:
|
|
798
1099
|
return await self._model("GET", self._client._path("enterprises", enterprise, "issues", number), Issue)
|
|
799
1100
|
|
|
800
1101
|
async def list_enterprise_comments(
|
|
801
|
-
self,
|
|
1102
|
+
self,
|
|
1103
|
+
*,
|
|
1104
|
+
enterprise: str,
|
|
1105
|
+
number: Union[int, str],
|
|
1106
|
+
page: Optional[int] = None,
|
|
1107
|
+
per_page: Optional[int] = None,
|
|
1108
|
+
**kwargs,
|
|
802
1109
|
) -> List[IssueComment]:
|
|
803
1110
|
return await self._models(
|
|
804
1111
|
"GET",
|
|
805
1112
|
self._client._path("enterprises", enterprise, "issues", number, "comments"),
|
|
806
1113
|
IssueComment,
|
|
807
|
-
params=
|
|
1114
|
+
params={"page": page, "per_page": per_page, **kwargs},
|
|
808
1115
|
)
|
|
809
1116
|
|
|
810
1117
|
async def list_enterprise_labels(self, *, enterprise: str, issue_id: Union[int, str]) -> List[Label]:
|
|
@@ -14,12 +14,28 @@ class AbstractMilestonesResource(ABC):
|
|
|
14
14
|
"""Interface for Milestones resource endpoints."""
|
|
15
15
|
|
|
16
16
|
@abstractmethod
|
|
17
|
-
def list(
|
|
17
|
+
def list(
|
|
18
|
+
self,
|
|
19
|
+
*,
|
|
20
|
+
owner: Optional[str] = None,
|
|
21
|
+
repo: Optional[str] = None,
|
|
22
|
+
state: Optional[str] = None,
|
|
23
|
+
sort: Optional[str] = None,
|
|
24
|
+
direction: Optional[str] = None,
|
|
25
|
+
page: Optional[int] = None,
|
|
26
|
+
per_page: Optional[int] = None,
|
|
27
|
+
**kwargs,
|
|
28
|
+
) -> List[Milestone]:
|
|
18
29
|
"""List milestones for a repository.
|
|
19
30
|
|
|
20
31
|
:param owner: Repository owner path. Uses the client default when omitted.
|
|
21
32
|
:param repo: Repository path. Uses the client default when omitted.
|
|
22
|
-
:param
|
|
33
|
+
:param state: Milestone state: ``open``, ``closed``, or ``all``. Default: ``open``.
|
|
34
|
+
:param sort: Sort field such as ``due_on``.
|
|
35
|
+
:param direction: ``asc`` or ``desc``. Default: ``asc``.
|
|
36
|
+
:param page: Page number.
|
|
37
|
+
:param per_page: Page size.
|
|
38
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
23
39
|
:returns: Milestones.
|
|
24
40
|
"""
|
|
25
41
|
|
|
@@ -90,9 +106,30 @@ class AbstractMilestonesResource(ABC):
|
|
|
90
106
|
class MilestonesResource(SyncResource, AbstractMilestonesResource):
|
|
91
107
|
"""Synchronous milestone endpoints."""
|
|
92
108
|
|
|
93
|
-
def list(
|
|
109
|
+
def list(
|
|
110
|
+
self,
|
|
111
|
+
*,
|
|
112
|
+
owner: Optional[str] = None,
|
|
113
|
+
repo: Optional[str] = None,
|
|
114
|
+
state: Optional[str] = None,
|
|
115
|
+
sort: Optional[str] = None,
|
|
116
|
+
direction: Optional[str] = None,
|
|
117
|
+
page: Optional[int] = None,
|
|
118
|
+
per_page: Optional[int] = None,
|
|
119
|
+
**kwargs,
|
|
120
|
+
) -> List[Milestone]:
|
|
94
121
|
return self._models(
|
|
95
|
-
"GET",
|
|
122
|
+
"GET",
|
|
123
|
+
self._client._repo_path("milestones", owner=owner, repo=repo),
|
|
124
|
+
Milestone,
|
|
125
|
+
params={
|
|
126
|
+
"state": state,
|
|
127
|
+
"sort": sort,
|
|
128
|
+
"direction": direction,
|
|
129
|
+
"page": page,
|
|
130
|
+
"per_page": per_page,
|
|
131
|
+
**kwargs,
|
|
132
|
+
},
|
|
96
133
|
)
|
|
97
134
|
|
|
98
135
|
def get(self, *, number: Union[int, str], owner: Optional[str] = None, repo: Optional[str] = None) -> Milestone:
|
|
@@ -142,9 +179,30 @@ class AsyncMilestonesResource(AsyncResource, AbstractMilestonesResource):
|
|
|
142
179
|
Mirrors :class:`MilestonesResource`; see that class for parameter documentation.
|
|
143
180
|
"""
|
|
144
181
|
|
|
145
|
-
async def list(
|
|
182
|
+
async def list(
|
|
183
|
+
self,
|
|
184
|
+
*,
|
|
185
|
+
owner: Optional[str] = None,
|
|
186
|
+
repo: Optional[str] = None,
|
|
187
|
+
state: Optional[str] = None,
|
|
188
|
+
sort: Optional[str] = None,
|
|
189
|
+
direction: Optional[str] = None,
|
|
190
|
+
page: Optional[int] = None,
|
|
191
|
+
per_page: Optional[int] = None,
|
|
192
|
+
**kwargs,
|
|
193
|
+
) -> List[Milestone]:
|
|
146
194
|
return await self._models(
|
|
147
|
-
"GET",
|
|
195
|
+
"GET",
|
|
196
|
+
self._client._repo_path("milestones", owner=owner, repo=repo),
|
|
197
|
+
Milestone,
|
|
198
|
+
params={
|
|
199
|
+
"state": state,
|
|
200
|
+
"sort": sort,
|
|
201
|
+
"direction": direction,
|
|
202
|
+
"page": page,
|
|
203
|
+
"per_page": per_page,
|
|
204
|
+
**kwargs,
|
|
205
|
+
},
|
|
148
206
|
)
|
|
149
207
|
|
|
150
208
|
async def get(
|
|
@@ -48,12 +48,26 @@ class AbstractPullsResource(ABC):
|
|
|
48
48
|
direction: Optional[str] = None,
|
|
49
49
|
page: Optional[int] = None,
|
|
50
50
|
per_page: Optional[int] = None,
|
|
51
|
-
|
|
51
|
+
base: Optional[str] = None,
|
|
52
|
+
since: Optional[str] = None,
|
|
53
|
+
milestone_number: Optional[int] = None,
|
|
54
|
+
labels: Optional[str] = None,
|
|
55
|
+
author: Optional[str] = None,
|
|
56
|
+
assignee: Optional[str] = None,
|
|
57
|
+
reviewer: Optional[str] = None,
|
|
58
|
+
merged_after: Optional[str] = None,
|
|
59
|
+
merged_before: Optional[str] = None,
|
|
60
|
+
only_count: Optional[bool] = None,
|
|
61
|
+
created_after: Optional[str] = None,
|
|
62
|
+
created_before: Optional[str] = None,
|
|
63
|
+
updated_before: Optional[str] = None,
|
|
64
|
+
updated_after: Optional[str] = None,
|
|
65
|
+
**kwargs,
|
|
52
66
|
) -> Union[List[PullRequest], PullRequestCount]:
|
|
53
67
|
"""List pull requests for a repository.
|
|
54
68
|
|
|
55
|
-
When ``only_count`` is true
|
|
56
|
-
|
|
69
|
+
When ``only_count`` is true, the API returns a JSON object with counts per state
|
|
70
|
+
instead of an array (see Pull Request API).
|
|
57
71
|
|
|
58
72
|
:param owner: Repository owner path. Uses the client default when omitted.
|
|
59
73
|
:param repo: Repository path (name). Uses the client default when omitted.
|
|
@@ -62,10 +76,21 @@ class AbstractPullsResource(ABC):
|
|
|
62
76
|
:param direction: ``asc`` or ``desc`` (API default is usually ``desc``).
|
|
63
77
|
:param page: Current page number.
|
|
64
78
|
:param per_page: Page size (max 100 per API documentation).
|
|
65
|
-
:param
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
79
|
+
:param base: Base branch filter.
|
|
80
|
+
:param since: Return PRs updated since this ISO 8601 timestamp.
|
|
81
|
+
:param milestone_number: Milestone number filter.
|
|
82
|
+
:param labels: Comma-separated label names.
|
|
83
|
+
:param author: Username of the PR creator.
|
|
84
|
+
:param assignee: Username of the PR assignee.
|
|
85
|
+
:param reviewer: Username of the PR reviewer.
|
|
86
|
+
:param merged_after: Return PRs merged after this ISO 8601 timestamp.
|
|
87
|
+
:param merged_before: Return PRs merged before this ISO 8601 timestamp.
|
|
88
|
+
:param only_count: If true, only return the count of merge requests.
|
|
89
|
+
:param created_after: Return PRs created after this ISO 8601 timestamp.
|
|
90
|
+
:param created_before: Return PRs created before this ISO 8601 timestamp.
|
|
91
|
+
:param updated_before: Return PRs updated before this ISO 8601 timestamp.
|
|
92
|
+
:param updated_after: Return PRs updated after this ISO 8601 timestamp.
|
|
93
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
69
94
|
:returns: A list of pull requests, or an :class:`~gitcode_api._models.APIObject` for count-only responses.
|
|
70
95
|
"""
|
|
71
96
|
|
|
@@ -366,14 +391,25 @@ class AbstractPullsResource(ABC):
|
|
|
366
391
|
|
|
367
392
|
@abstractmethod
|
|
368
393
|
def list_operation_logs(
|
|
369
|
-
self,
|
|
394
|
+
self,
|
|
395
|
+
*,
|
|
396
|
+
number: Union[int, str],
|
|
397
|
+
owner: Optional[str] = None,
|
|
398
|
+
repo: Optional[str] = None,
|
|
399
|
+
sort: Optional[str] = None,
|
|
400
|
+
page: Optional[int] = None,
|
|
401
|
+
per_page: Optional[int] = None,
|
|
402
|
+
**kwargs,
|
|
370
403
|
) -> List[PullRequestOperationLog]:
|
|
371
404
|
"""List operation logs for a pull request.
|
|
372
405
|
|
|
373
406
|
:param number: Pull request number.
|
|
374
407
|
:param owner: Repository owner path. Uses the client default when omitted.
|
|
375
408
|
:param repo: Repository path. Uses the client default when omitted.
|
|
376
|
-
:param
|
|
409
|
+
:param sort: Sort direction: ``desc`` (default) or ``asc``.
|
|
410
|
+
:param page: Page number.
|
|
411
|
+
:param per_page: Page size.
|
|
412
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
377
413
|
:returns: Log entries as generic API objects.
|
|
378
414
|
"""
|
|
379
415
|
|
|
@@ -467,20 +503,56 @@ class AbstractPullsResource(ABC):
|
|
|
467
503
|
"""
|
|
468
504
|
|
|
469
505
|
@abstractmethod
|
|
470
|
-
def list_enterprise(
|
|
506
|
+
def list_enterprise(
|
|
507
|
+
self,
|
|
508
|
+
*,
|
|
509
|
+
enterprise: str,
|
|
510
|
+
repo: Optional[str] = None,
|
|
511
|
+
state: Optional[str] = None,
|
|
512
|
+
issue_number: Optional[int] = None,
|
|
513
|
+
sort: Optional[str] = None,
|
|
514
|
+
direction: Optional[str] = None,
|
|
515
|
+
page: Optional[int] = None,
|
|
516
|
+
per_page: Optional[int] = None,
|
|
517
|
+
**kwargs,
|
|
518
|
+
) -> List[PullRequest]:
|
|
471
519
|
"""List enterprise pull requests.
|
|
472
520
|
|
|
473
521
|
:param enterprise: Enterprise path or login.
|
|
474
|
-
:param
|
|
522
|
+
:param repo: Repository path filter (query parameter).
|
|
523
|
+
:param state: Pull request state filter.
|
|
524
|
+
:param issue_number: Issue global id filter.
|
|
525
|
+
:param sort: Sort field. Default: sorted by creation time.
|
|
526
|
+
:param direction: ``asc`` or ``desc``.
|
|
527
|
+
:param page: Page number.
|
|
528
|
+
:param per_page: Page size.
|
|
529
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
475
530
|
:returns: Pull requests in the enterprise scope.
|
|
476
531
|
"""
|
|
477
532
|
|
|
478
533
|
@abstractmethod
|
|
479
|
-
def list_org(
|
|
534
|
+
def list_org(
|
|
535
|
+
self,
|
|
536
|
+
*,
|
|
537
|
+
org: str,
|
|
538
|
+
state: Optional[str] = None,
|
|
539
|
+
issue_number: Optional[int] = None,
|
|
540
|
+
sort: Optional[str] = None,
|
|
541
|
+
direction: Optional[str] = None,
|
|
542
|
+
page: Optional[int] = None,
|
|
543
|
+
per_page: Optional[int] = None,
|
|
544
|
+
**kwargs,
|
|
545
|
+
) -> List[PullRequest]:
|
|
480
546
|
"""List pull requests for an organization scope.
|
|
481
547
|
|
|
482
548
|
:param org: Organization path (``GET .../org/{org}/pull_requests``).
|
|
483
|
-
:param
|
|
549
|
+
:param state: Pull request state filter.
|
|
550
|
+
:param issue_number: Global issue id filter.
|
|
551
|
+
:param sort: Sort field. Default: sorted by creation time.
|
|
552
|
+
:param direction: ``asc`` or ``desc``.
|
|
553
|
+
:param page: Page number.
|
|
554
|
+
:param per_page: Page size.
|
|
555
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
484
556
|
:returns: Organization-scoped pull requests.
|
|
485
557
|
"""
|
|
486
558
|
|
|
@@ -553,7 +625,21 @@ class PullsResource(SyncResource, AbstractPullsResource):
|
|
|
553
625
|
direction: Optional[str] = None,
|
|
554
626
|
page: Optional[int] = None,
|
|
555
627
|
per_page: Optional[int] = None,
|
|
556
|
-
|
|
628
|
+
base: Optional[str] = None,
|
|
629
|
+
since: Optional[str] = None,
|
|
630
|
+
milestone_number: Optional[int] = None,
|
|
631
|
+
labels: Optional[str] = None,
|
|
632
|
+
author: Optional[str] = None,
|
|
633
|
+
assignee: Optional[str] = None,
|
|
634
|
+
reviewer: Optional[str] = None,
|
|
635
|
+
merged_after: Optional[str] = None,
|
|
636
|
+
merged_before: Optional[str] = None,
|
|
637
|
+
only_count: Optional[bool] = None,
|
|
638
|
+
created_after: Optional[str] = None,
|
|
639
|
+
created_before: Optional[str] = None,
|
|
640
|
+
updated_before: Optional[str] = None,
|
|
641
|
+
updated_after: Optional[str] = None,
|
|
642
|
+
**kwargs,
|
|
557
643
|
) -> Union[List[PullRequest], PullRequestCount]:
|
|
558
644
|
path = self._client._repo_path("pulls", owner=owner, repo=repo)
|
|
559
645
|
response = self._request(
|
|
@@ -565,7 +651,21 @@ class PullsResource(SyncResource, AbstractPullsResource):
|
|
|
565
651
|
"direction": direction,
|
|
566
652
|
"page": page,
|
|
567
653
|
"per_page": per_page,
|
|
568
|
-
|
|
654
|
+
"base": base,
|
|
655
|
+
"since": since,
|
|
656
|
+
"milestone_number": milestone_number,
|
|
657
|
+
"labels": labels,
|
|
658
|
+
"author": author,
|
|
659
|
+
"assignee": assignee,
|
|
660
|
+
"reviewer": reviewer,
|
|
661
|
+
"merged_after": merged_after,
|
|
662
|
+
"merged_before": merged_before,
|
|
663
|
+
"only_count": only_count,
|
|
664
|
+
"created_after": created_after,
|
|
665
|
+
"created_before": created_before,
|
|
666
|
+
"updated_before": updated_before,
|
|
667
|
+
"updated_after": updated_after,
|
|
668
|
+
**kwargs,
|
|
569
669
|
},
|
|
570
670
|
)
|
|
571
671
|
if isinstance(response, dict):
|
|
@@ -801,12 +901,20 @@ class PullsResource(SyncResource, AbstractPullsResource):
|
|
|
801
901
|
)
|
|
802
902
|
|
|
803
903
|
def list_operation_logs(
|
|
804
|
-
self,
|
|
904
|
+
self,
|
|
905
|
+
*,
|
|
906
|
+
number: Union[int, str],
|
|
907
|
+
owner: Optional[str] = None,
|
|
908
|
+
repo: Optional[str] = None,
|
|
909
|
+
sort: Optional[str] = None,
|
|
910
|
+
page: Optional[int] = None,
|
|
911
|
+
per_page: Optional[int] = None,
|
|
912
|
+
**kwargs,
|
|
805
913
|
) -> List[PullRequestOperationLog]:
|
|
806
914
|
data = self._request(
|
|
807
915
|
"GET",
|
|
808
916
|
self._client._repo_path("pulls", number, "operate_logs", owner=owner, repo=repo),
|
|
809
|
-
params=
|
|
917
|
+
params={"sort": sort, "page": page, "per_page": per_page, **kwargs},
|
|
810
918
|
)
|
|
811
919
|
return [as_model(item, PullRequestOperationLog) for item in data]
|
|
812
920
|
|
|
@@ -871,13 +979,61 @@ class PullsResource(SyncResource, AbstractPullsResource):
|
|
|
871
979
|
) -> List[Issue]:
|
|
872
980
|
return self._models("GET", self._client._repo_path("pulls", number, "issues", owner=owner, repo=repo), Issue)
|
|
873
981
|
|
|
874
|
-
def list_enterprise(
|
|
982
|
+
def list_enterprise(
|
|
983
|
+
self,
|
|
984
|
+
*,
|
|
985
|
+
enterprise: str,
|
|
986
|
+
repo: Optional[str] = None,
|
|
987
|
+
state: Optional[str] = None,
|
|
988
|
+
issue_number: Optional[int] = None,
|
|
989
|
+
sort: Optional[str] = None,
|
|
990
|
+
direction: Optional[str] = None,
|
|
991
|
+
page: Optional[int] = None,
|
|
992
|
+
per_page: Optional[int] = None,
|
|
993
|
+
**kwargs,
|
|
994
|
+
) -> List[PullRequest]:
|
|
875
995
|
return self._models(
|
|
876
|
-
"GET",
|
|
996
|
+
"GET",
|
|
997
|
+
self._client._path("enterprises", enterprise, "pull_requests"),
|
|
998
|
+
PullRequest,
|
|
999
|
+
params={
|
|
1000
|
+
"repo": repo,
|
|
1001
|
+
"state": state,
|
|
1002
|
+
"issue_number": issue_number,
|
|
1003
|
+
"sort": sort,
|
|
1004
|
+
"direction": direction,
|
|
1005
|
+
"page": page,
|
|
1006
|
+
"per_page": per_page,
|
|
1007
|
+
**kwargs,
|
|
1008
|
+
},
|
|
877
1009
|
)
|
|
878
1010
|
|
|
879
|
-
def list_org(
|
|
880
|
-
|
|
1011
|
+
def list_org(
|
|
1012
|
+
self,
|
|
1013
|
+
*,
|
|
1014
|
+
org: str,
|
|
1015
|
+
state: Optional[str] = None,
|
|
1016
|
+
issue_number: Optional[int] = None,
|
|
1017
|
+
sort: Optional[str] = None,
|
|
1018
|
+
direction: Optional[str] = None,
|
|
1019
|
+
page: Optional[int] = None,
|
|
1020
|
+
per_page: Optional[int] = None,
|
|
1021
|
+
**kwargs,
|
|
1022
|
+
) -> List[PullRequest]:
|
|
1023
|
+
return self._models(
|
|
1024
|
+
"GET",
|
|
1025
|
+
self._client._path("org", org, "pull_requests"),
|
|
1026
|
+
PullRequest,
|
|
1027
|
+
params={
|
|
1028
|
+
"state": state,
|
|
1029
|
+
"issue_number": issue_number,
|
|
1030
|
+
"sort": sort,
|
|
1031
|
+
"direction": direction,
|
|
1032
|
+
"page": page,
|
|
1033
|
+
"per_page": per_page,
|
|
1034
|
+
**kwargs,
|
|
1035
|
+
},
|
|
1036
|
+
)
|
|
881
1037
|
|
|
882
1038
|
def list_issue_pull_requests(self, *, enterprise: str, number: Union[int, str]) -> List[PullRequest]:
|
|
883
1039
|
return self._models(
|
|
@@ -947,7 +1103,21 @@ class AsyncPullsResource(AsyncResource, AbstractPullsResource):
|
|
|
947
1103
|
direction: Optional[str] = None,
|
|
948
1104
|
page: Optional[int] = None,
|
|
949
1105
|
per_page: Optional[int] = None,
|
|
950
|
-
|
|
1106
|
+
base: Optional[str] = None,
|
|
1107
|
+
since: Optional[str] = None,
|
|
1108
|
+
milestone_number: Optional[int] = None,
|
|
1109
|
+
labels: Optional[str] = None,
|
|
1110
|
+
author: Optional[str] = None,
|
|
1111
|
+
assignee: Optional[str] = None,
|
|
1112
|
+
reviewer: Optional[str] = None,
|
|
1113
|
+
merged_after: Optional[str] = None,
|
|
1114
|
+
merged_before: Optional[str] = None,
|
|
1115
|
+
only_count: Optional[bool] = None,
|
|
1116
|
+
created_after: Optional[str] = None,
|
|
1117
|
+
created_before: Optional[str] = None,
|
|
1118
|
+
updated_before: Optional[str] = None,
|
|
1119
|
+
updated_after: Optional[str] = None,
|
|
1120
|
+
**kwargs,
|
|
951
1121
|
) -> Union[List[PullRequest], PullRequestCount]:
|
|
952
1122
|
response = await self._request(
|
|
953
1123
|
"GET",
|
|
@@ -958,7 +1128,21 @@ class AsyncPullsResource(AsyncResource, AbstractPullsResource):
|
|
|
958
1128
|
"direction": direction,
|
|
959
1129
|
"page": page,
|
|
960
1130
|
"per_page": per_page,
|
|
961
|
-
|
|
1131
|
+
"base": base,
|
|
1132
|
+
"since": since,
|
|
1133
|
+
"milestone_number": milestone_number,
|
|
1134
|
+
"labels": labels,
|
|
1135
|
+
"author": author,
|
|
1136
|
+
"assignee": assignee,
|
|
1137
|
+
"reviewer": reviewer,
|
|
1138
|
+
"merged_after": merged_after,
|
|
1139
|
+
"merged_before": merged_before,
|
|
1140
|
+
"only_count": only_count,
|
|
1141
|
+
"created_after": created_after,
|
|
1142
|
+
"created_before": created_before,
|
|
1143
|
+
"updated_before": updated_before,
|
|
1144
|
+
"updated_after": updated_after,
|
|
1145
|
+
**kwargs,
|
|
962
1146
|
},
|
|
963
1147
|
)
|
|
964
1148
|
if isinstance(response, dict):
|
|
@@ -1173,10 +1357,20 @@ class AsyncPullsResource(AsyncResource, AbstractPullsResource):
|
|
|
1173
1357
|
)
|
|
1174
1358
|
|
|
1175
1359
|
async def list_operation_logs(
|
|
1176
|
-
self,
|
|
1360
|
+
self,
|
|
1361
|
+
*,
|
|
1362
|
+
number: Union[int, str],
|
|
1363
|
+
owner: Optional[str] = None,
|
|
1364
|
+
repo: Optional[str] = None,
|
|
1365
|
+
sort: Optional[str] = None,
|
|
1366
|
+
page: Optional[int] = None,
|
|
1367
|
+
per_page: Optional[int] = None,
|
|
1368
|
+
**kwargs,
|
|
1177
1369
|
) -> List[PullRequestOperationLog]:
|
|
1178
1370
|
data = await self._request(
|
|
1179
|
-
"GET",
|
|
1371
|
+
"GET",
|
|
1372
|
+
self._client._repo_path("pulls", number, "operate_logs", owner=owner, repo=repo),
|
|
1373
|
+
params={"sort": sort, "page": page, "per_page": per_page, **kwargs},
|
|
1180
1374
|
)
|
|
1181
1375
|
return [as_model(item, PullRequestOperationLog) for item in data]
|
|
1182
1376
|
|
|
@@ -1243,13 +1437,61 @@ class AsyncPullsResource(AsyncResource, AbstractPullsResource):
|
|
|
1243
1437
|
"GET", self._client._repo_path("pulls", number, "issues", owner=owner, repo=repo), Issue
|
|
1244
1438
|
)
|
|
1245
1439
|
|
|
1246
|
-
async def list_enterprise(
|
|
1440
|
+
async def list_enterprise(
|
|
1441
|
+
self,
|
|
1442
|
+
*,
|
|
1443
|
+
enterprise: str,
|
|
1444
|
+
repo: Optional[str] = None,
|
|
1445
|
+
state: Optional[str] = None,
|
|
1446
|
+
issue_number: Optional[int] = None,
|
|
1447
|
+
sort: Optional[str] = None,
|
|
1448
|
+
direction: Optional[str] = None,
|
|
1449
|
+
page: Optional[int] = None,
|
|
1450
|
+
per_page: Optional[int] = None,
|
|
1451
|
+
**kwargs,
|
|
1452
|
+
) -> List[PullRequest]:
|
|
1247
1453
|
return await self._models(
|
|
1248
|
-
"GET",
|
|
1454
|
+
"GET",
|
|
1455
|
+
self._client._path("enterprises", enterprise, "pull_requests"),
|
|
1456
|
+
PullRequest,
|
|
1457
|
+
params={
|
|
1458
|
+
"repo": repo,
|
|
1459
|
+
"state": state,
|
|
1460
|
+
"issue_number": issue_number,
|
|
1461
|
+
"sort": sort,
|
|
1462
|
+
"direction": direction,
|
|
1463
|
+
"page": page,
|
|
1464
|
+
"per_page": per_page,
|
|
1465
|
+
**kwargs,
|
|
1466
|
+
},
|
|
1249
1467
|
)
|
|
1250
1468
|
|
|
1251
|
-
async def list_org(
|
|
1252
|
-
|
|
1469
|
+
async def list_org(
|
|
1470
|
+
self,
|
|
1471
|
+
*,
|
|
1472
|
+
org: str,
|
|
1473
|
+
state: Optional[str] = None,
|
|
1474
|
+
issue_number: Optional[int] = None,
|
|
1475
|
+
sort: Optional[str] = None,
|
|
1476
|
+
direction: Optional[str] = None,
|
|
1477
|
+
page: Optional[int] = None,
|
|
1478
|
+
per_page: Optional[int] = None,
|
|
1479
|
+
**kwargs,
|
|
1480
|
+
) -> List[PullRequest]:
|
|
1481
|
+
return await self._models(
|
|
1482
|
+
"GET",
|
|
1483
|
+
self._client._path("org", org, "pull_requests"),
|
|
1484
|
+
PullRequest,
|
|
1485
|
+
params={
|
|
1486
|
+
"state": state,
|
|
1487
|
+
"issue_number": issue_number,
|
|
1488
|
+
"sort": sort,
|
|
1489
|
+
"direction": direction,
|
|
1490
|
+
"page": page,
|
|
1491
|
+
"per_page": per_page,
|
|
1492
|
+
**kwargs,
|
|
1493
|
+
},
|
|
1494
|
+
)
|
|
1253
1495
|
|
|
1254
1496
|
async def list_issue_pull_requests(self, *, enterprise: str, number: Union[int, str]) -> List[PullRequest]:
|
|
1255
1497
|
return await self._models(
|
|
@@ -474,13 +474,23 @@ class AbstractReposResource(ABC):
|
|
|
474
474
|
|
|
475
475
|
@abstractmethod
|
|
476
476
|
def get_download_statistics(
|
|
477
|
-
self,
|
|
477
|
+
self,
|
|
478
|
+
*,
|
|
479
|
+
owner: Optional[str] = None,
|
|
480
|
+
repo: Optional[str] = None,
|
|
481
|
+
start_date: Optional[str] = None,
|
|
482
|
+
end_date: Optional[str] = None,
|
|
483
|
+
direction: Optional[str] = None,
|
|
484
|
+
**kwargs,
|
|
478
485
|
) -> RepositoryDownloadStatistics:
|
|
479
486
|
"""Get download statistics for a repository.
|
|
480
487
|
|
|
481
488
|
:param owner: Repository owner path. Uses the client default when omitted.
|
|
482
489
|
:param repo: Repository name. Uses the client default when omitted.
|
|
483
|
-
:param
|
|
490
|
+
:param start_date: Start date filter (e.g. ``2024-01-06``).
|
|
491
|
+
:param end_date: End date filter (e.g. ``2024-12-06``).
|
|
492
|
+
:param direction: Sort direction: ``asc`` or ``desc``. Default: ``desc``.
|
|
493
|
+
:param kwargs: Additional arguments forwarded directly in request.
|
|
484
494
|
:returns: Download statistics payload.
|
|
485
495
|
"""
|
|
486
496
|
|
|
@@ -856,13 +866,20 @@ class ReposResource(SyncResource, AbstractReposResource):
|
|
|
856
866
|
return [as_model(item, RepositoryCustomizedRole) for item in data]
|
|
857
867
|
|
|
858
868
|
def get_download_statistics(
|
|
859
|
-
self,
|
|
869
|
+
self,
|
|
870
|
+
*,
|
|
871
|
+
owner: Optional[str] = None,
|
|
872
|
+
repo: Optional[str] = None,
|
|
873
|
+
start_date: Optional[str] = None,
|
|
874
|
+
end_date: Optional[str] = None,
|
|
875
|
+
direction: Optional[str] = None,
|
|
876
|
+
**kwargs,
|
|
860
877
|
) -> RepositoryDownloadStatistics:
|
|
861
878
|
return self._model(
|
|
862
879
|
"GET",
|
|
863
880
|
self._client._repo_path("download_statistics", owner=owner, repo=repo),
|
|
864
881
|
RepositoryDownloadStatistics,
|
|
865
|
-
params=
|
|
882
|
+
params={"start_date": start_date, "end_date": end_date, "direction": direction, **kwargs},
|
|
866
883
|
)
|
|
867
884
|
|
|
868
885
|
def get_contributor_statistics(
|
|
@@ -1245,13 +1262,20 @@ class AsyncReposResource(AsyncResource, AbstractReposResource):
|
|
|
1245
1262
|
return [as_model(item, RepositoryCustomizedRole) for item in data]
|
|
1246
1263
|
|
|
1247
1264
|
async def get_download_statistics(
|
|
1248
|
-
self,
|
|
1265
|
+
self,
|
|
1266
|
+
*,
|
|
1267
|
+
owner: Optional[str] = None,
|
|
1268
|
+
repo: Optional[str] = None,
|
|
1269
|
+
start_date: Optional[str] = None,
|
|
1270
|
+
end_date: Optional[str] = None,
|
|
1271
|
+
direction: Optional[str] = None,
|
|
1272
|
+
**kwargs,
|
|
1249
1273
|
) -> RepositoryDownloadStatistics:
|
|
1250
1274
|
return await self._model(
|
|
1251
1275
|
"GET",
|
|
1252
1276
|
self._client._repo_path("download_statistics", owner=owner, repo=repo),
|
|
1253
1277
|
RepositoryDownloadStatistics,
|
|
1254
|
-
params=
|
|
1278
|
+
params={"start_date": start_date, "end_date": end_date, "direction": direction, **kwargs},
|
|
1255
1279
|
)
|
|
1256
1280
|
|
|
1257
1281
|
async def get_contributor_statistics(
|
gitcode_api/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.3.
|
|
1
|
+
1.3.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitcode-api
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.2
|
|
4
4
|
Summary: Easy to use Python SDK for the GitCode REST API. Providing builtin CLI tool, and optional LLM integration (MCP, OpenAI tool, and openJiuwen tool) for agents. Community-maintained.
|
|
5
5
|
Author-email: "Hugo (Jin Huang)" <hugo@hugohuang.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -36,7 +36,7 @@ Requires-Dist: fastmcp; python_version >= "3.10" and extra == "mcp"
|
|
|
36
36
|
Dynamic: license-file
|
|
37
37
|
|
|
38
38
|
# GitCode-API [](https://gitcode.com/SushiNinja/GitCode-API) [](https://github.com/Trenza1ore/GitCode-API)
|
|
39
|
-
[](https://pypi.org/project/gitcode-api) [](https://pypi.org/project/gitcode-api) [](https://pypistats.org/packages/gitcode-api) [](https://github.com/Trenza1ore/GitCode-API/releases)
|
|
40
40
|
|
|
41
41
|
[](https://gitcode-api.readthedocs.io) [](README.zh.md)
|
|
42
42
|
|
|
@@ -13,7 +13,7 @@ gitcode_api/models.py,sha256=Yfkn3zj2iEecOockytFS8lCNaYICYdjHdhpsxyaPkDk,4425
|
|
|
13
13
|
gitcode_api/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
gitcode_api/run_mcp.py,sha256=3_JOrjg9_yL-0M-H-F8mPgxdVKh7K2ggipu7UHeNCg0,147
|
|
15
15
|
gitcode_api/utils.py,sha256=51QmPTQPeNsPSGf2IzhwmiEO1H2GkJrp2A7vkzhOOag,1351
|
|
16
|
-
gitcode_api/version.txt,sha256=
|
|
16
|
+
gitcode_api/version.txt,sha256=MxWJcqU4d7Qhz-JZi42TyrFpljpJZLRe6InoU0mXkBg,6
|
|
17
17
|
gitcode_api/llm/__init__.py,sha256=rU75ZlJvTWNVxBLc3QzdfWmSjqVc9z6hfQ8z6jVVKOk,1693
|
|
18
18
|
gitcode_api/llm/_tool.py,sha256=b65iUiHo1H29uA6mFM3WlD0zZlISsENx1tpEqlkiUoA,16239
|
|
19
19
|
gitcode_api/llm/jiuwen.py,sha256=qca2y4544xoRYFOCMbkjiUZZLpJGMcBkK4w5bqs60-4,4276
|
|
@@ -27,14 +27,14 @@ gitcode_api/resources/account/__init__.py,sha256=lZueYwioHR4dRyHoABGM05cT0YkO52T
|
|
|
27
27
|
gitcode_api/resources/account/oauth_resource_group.py,sha256=kmHHjtRhqtkOqB228nPp-ci5Wy1GAfSr0olWKObA36s,5690
|
|
28
28
|
gitcode_api/resources/account/orgs_resource_group.py,sha256=AnwuP23N9MkmS7QHeNGCG7s6GRTCVL6Cm7VgHGFxP_4,16539
|
|
29
29
|
gitcode_api/resources/account/search_resource_group.py,sha256=0xqJUOEFdCnyEA_EhwhJoNMXo8wpXU-DYfG7Dl0zyIk,6998
|
|
30
|
-
gitcode_api/resources/account/users_resource_group.py,sha256=
|
|
30
|
+
gitcode_api/resources/account/users_resource_group.py,sha256=uFUcYS_fPP73If8rIklSyI_swyDtaeCYBfeFzIidv3w,10373
|
|
31
31
|
gitcode_api/resources/collaboration/__init__.py,sha256=jcH-u9KIgLEThoqKShh7MkBdqKioZ93gNY58hJeTWW0,727
|
|
32
32
|
gitcode_api/resources/collaboration/_helpers.py,sha256=t2OYoMo0_jra4hQIrYRpY88ZZNrZJRe6EiCwOM9t0uU,305
|
|
33
|
-
gitcode_api/resources/collaboration/issues_resource_group.py,sha256=
|
|
33
|
+
gitcode_api/resources/collaboration/issues_resource_group.py,sha256=QXu6wwuozaX4j7l33J-R9ATfOkNB-8k7lIqCmD7w5eg,41677
|
|
34
34
|
gitcode_api/resources/collaboration/labels_resource_group.py,sha256=TML77N2t_IWO3uoPyQNl-wNVPF7L75syHkdFQa89vSk,9549
|
|
35
35
|
gitcode_api/resources/collaboration/members_resource_group.py,sha256=qd_6fV5bllGMJ-9SDvNDLj_XiGloXsiv27qufboUX5g,6770
|
|
36
|
-
gitcode_api/resources/collaboration/milestones_resource_group.py,sha256=
|
|
37
|
-
gitcode_api/resources/collaboration/pulls_resource_group.py,sha256=
|
|
36
|
+
gitcode_api/resources/collaboration/milestones_resource_group.py,sha256=Nz--QZAHwgIjwVTDrlFTYtPSBtF2f85-cpzUAC1M1ic,8525
|
|
37
|
+
gitcode_api/resources/collaboration/pulls_resource_group.py,sha256=op1NHAfIIcY5NHucn2o3hg0V53DkjVmrGWKrj4ags6U,57561
|
|
38
38
|
gitcode_api/resources/misc/__init__.py,sha256=UWmADs0zoWrn4L2ZlaWTkt3CMQfRE_IADzruNGaJmm4,451
|
|
39
39
|
gitcode_api/resources/misc/releases_resource_group.py,sha256=FuedWSqbAsbSc0ppIVwJl_mB2TWFizYCCyJSE9PtSQI,15244
|
|
40
40
|
gitcode_api/resources/misc/tags_resource_group.py,sha256=jzs9ezJbBanI2LOSBWK7U0zMql0Xxz1hgOaNzC_Ncro,9662
|
|
@@ -43,10 +43,10 @@ gitcode_api/resources/repositories/__init__.py,sha256=HuatiYSlbk_yACIvzgVQyMuHQO
|
|
|
43
43
|
gitcode_api/resources/repositories/branches_resource_group.py,sha256=dGhd6241IzhLuHCmtjYWsTxDhhS9tgLT6zvyz6lYPiY,5673
|
|
44
44
|
gitcode_api/resources/repositories/commits_resource_group.py,sha256=vqgy_-d7Ec-5w6FKWJ0v6QGbh9mtjnmqm7iZ9P5gBLw,11254
|
|
45
45
|
gitcode_api/resources/repositories/repo_contents_resource_group.py,sha256=pPsEMTU_3kbSNlCRtkHM7dUdzAo3lLxdYleMs1vmLBU,14832
|
|
46
|
-
gitcode_api/resources/repositories/repos_resource_group.py,sha256=
|
|
47
|
-
gitcode_api-1.3.
|
|
48
|
-
gitcode_api-1.3.
|
|
49
|
-
gitcode_api-1.3.
|
|
50
|
-
gitcode_api-1.3.
|
|
51
|
-
gitcode_api-1.3.
|
|
52
|
-
gitcode_api-1.3.
|
|
46
|
+
gitcode_api/resources/repositories/repos_resource_group.py,sha256=nUOgMRTzSaA8ZM8tLumMtxWB2a-a0hjYgfLh2UUiSDw,47380
|
|
47
|
+
gitcode_api-1.3.2.dist-info/licenses/LICENSE,sha256=gOACXuWhMu6PJKVLr9RQbxX3HULnZIGNXCaMFJIXhoA,1067
|
|
48
|
+
gitcode_api-1.3.2.dist-info/METADATA,sha256=1y9U5O2-83k9gdOGv-g4cV9PdOqHu6s9LlfSdyA9WWE,22512
|
|
49
|
+
gitcode_api-1.3.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
50
|
+
gitcode_api-1.3.2.dist-info/entry_points.txt,sha256=dIPylJcgohIE2RRIlt3In2WzcwDK8TOdkL_ReKuij4o,53
|
|
51
|
+
gitcode_api-1.3.2.dist-info/top_level.txt,sha256=gIlg0ptyOUHJT64ajOjWIhRPYgIQnMIvnhhnesw9fxU,12
|
|
52
|
+
gitcode_api-1.3.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|