gitcode-api 1.3.1__py3-none-any.whl → 1.3.3__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.
@@ -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: Forwarded directly, useful since GitCode has awful documentation...
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(self, *, enterprise: str, **params) -> List[Issue]:
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 params: Additional query parameters accepted by ``GET .../enterprises/{enterprise}/issues``.
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(self, **params) -> List[Issue]:
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 params: Query parameters for ``GET /user/issues`` (filters, pagination, etc.).
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(self, *, org: str, **params) -> List[Issue]:
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 params: Query parameters for ``GET .../orgs/{org}/issues``.
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(self, *, enterprise: str, number: Union[int, str], **params) -> List[IssueComment]:
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 params: Optional pagination or filter query parameters.
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
- } | kwargs,
515
+ **kwargs,
516
+ },
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(self, *, enterprise: str, **params) -> List[Issue]:
548
- return self._models("GET", self._client._path("enterprises", enterprise, "issues"), Issue, params=params)
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(self, **params) -> List[Issue]:
551
- return self._models("GET", self._client._path("user", "issues"), Issue, params=params)
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(self, *, org: str, **params) -> List[Issue]:
554
- return self._models("GET", self._client._path("orgs", org, "issues"), Issue, params=params)
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(self, *, enterprise: str, number: Union[int, str], **params) -> List[IssueComment]:
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=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]:
@@ -684,6 +884,7 @@ class AsyncIssuesResource(AsyncResource, AbstractIssuesResource):
684
884
  "milestone": milestone,
685
885
  "security_hole": security_hole,
686
886
  "template_path": template_path,
887
+ **kwargs,
687
888
  },
688
889
  )
689
890
 
@@ -785,26 +986,133 @@ class AsyncIssuesResource(AsyncResource, AbstractIssuesResource):
785
986
  ) -> None:
786
987
  await self._request("DELETE", self._client._repo_path("issues", number, "labels", name, owner=owner, repo=repo))
787
988
 
788
- async def list_enterprise(self, *, enterprise: str, **params) -> List[Issue]:
789
- return await self._models("GET", self._client._path("enterprises", enterprise, "issues"), Issue, params=params)
989
+ async def list_enterprise(
990
+ self,
991
+ *,
992
+ enterprise: str,
993
+ state: Optional[str] = None,
994
+ labels: Optional[str] = None,
995
+ sort: Optional[str] = None,
996
+ direction: Optional[str] = None,
997
+ since: Optional[str] = None,
998
+ page: Optional[int] = None,
999
+ per_page: Optional[int] = None,
1000
+ milestone: Optional[str] = None,
1001
+ assignee: Optional[str] = None,
1002
+ creator: Optional[str] = None,
1003
+ program: Optional[str] = None,
1004
+ created_at: Optional[str] = None,
1005
+ created_before: Optional[str] = None,
1006
+ **kwargs,
1007
+ ) -> List[Issue]:
1008
+ return await self._models(
1009
+ "GET",
1010
+ self._client._path("enterprises", enterprise, "issues"),
1011
+ Issue,
1012
+ params={
1013
+ "state": state,
1014
+ "labels": labels,
1015
+ "sort": sort,
1016
+ "direction": direction,
1017
+ "since": since,
1018
+ "page": page,
1019
+ "per_page": per_page,
1020
+ "milestone": milestone,
1021
+ "assignee": assignee,
1022
+ "creator": creator,
1023
+ "program": program,
1024
+ "created_at": created_at,
1025
+ "created_before": created_before,
1026
+ **kwargs,
1027
+ },
1028
+ )
790
1029
 
791
- async def list_user(self, **params) -> List[Issue]:
792
- return await self._models("GET", self._client._path("user", "issues"), Issue, params=params)
1030
+ async def list_user(
1031
+ self,
1032
+ *,
1033
+ filter: Optional[str] = None,
1034
+ state: Optional[str] = None,
1035
+ labels: Optional[str] = None,
1036
+ sort: Optional[str] = None,
1037
+ direction: Optional[str] = None,
1038
+ since: Optional[str] = None,
1039
+ page: Optional[int] = None,
1040
+ per_page: Optional[int] = None,
1041
+ schedule: Optional[str] = None,
1042
+ deadline: Optional[str] = None,
1043
+ created_at: Optional[str] = None,
1044
+ finished_at: Optional[str] = None,
1045
+ **kwargs,
1046
+ ) -> List[Issue]:
1047
+ return await self._models(
1048
+ "GET",
1049
+ self._client._path("user", "issues"),
1050
+ Issue,
1051
+ params={
1052
+ "filter": filter,
1053
+ "state": state,
1054
+ "labels": labels,
1055
+ "sort": sort,
1056
+ "direction": direction,
1057
+ "since": since,
1058
+ "page": page,
1059
+ "per_page": per_page,
1060
+ "schedule": schedule,
1061
+ "deadline": deadline,
1062
+ "created_at": created_at,
1063
+ "finished_at": finished_at,
1064
+ **kwargs,
1065
+ },
1066
+ )
793
1067
 
794
- async def list_org(self, *, org: str, **params) -> List[Issue]:
795
- return await self._models("GET", self._client._path("orgs", org, "issues"), Issue, params=params)
1068
+ async def list_org(
1069
+ self,
1070
+ *,
1071
+ org: str,
1072
+ filter: Optional[str] = None,
1073
+ state: Optional[str] = None,
1074
+ labels: Optional[str] = None,
1075
+ sort: Optional[str] = None,
1076
+ direction: Optional[str] = None,
1077
+ page: Optional[int] = None,
1078
+ per_page: Optional[int] = None,
1079
+ created_at: Optional[str] = None,
1080
+ **kwargs,
1081
+ ) -> List[Issue]:
1082
+ return await self._models(
1083
+ "GET",
1084
+ self._client._path("orgs", org, "issues"),
1085
+ Issue,
1086
+ params={
1087
+ "filter": filter,
1088
+ "state": state,
1089
+ "labels": labels,
1090
+ "sort": sort,
1091
+ "direction": direction,
1092
+ "page": page,
1093
+ "per_page": per_page,
1094
+ "created_at": created_at,
1095
+ **kwargs,
1096
+ },
1097
+ )
796
1098
 
797
1099
  async def get_enterprise_issue(self, *, enterprise: str, number: Union[int, str]) -> Issue:
798
1100
  return await self._model("GET", self._client._path("enterprises", enterprise, "issues", number), Issue)
799
1101
 
800
1102
  async def list_enterprise_comments(
801
- self, *, enterprise: str, number: Union[int, str], **params
1103
+ self,
1104
+ *,
1105
+ enterprise: str,
1106
+ number: Union[int, str],
1107
+ page: Optional[int] = None,
1108
+ per_page: Optional[int] = None,
1109
+ **kwargs,
802
1110
  ) -> List[IssueComment]:
803
1111
  return await self._models(
804
1112
  "GET",
805
1113
  self._client._path("enterprises", enterprise, "issues", number, "comments"),
806
1114
  IssueComment,
807
- params=params,
1115
+ params={"page": page, "per_page": per_page, **kwargs},
808
1116
  )
809
1117
 
810
1118
  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(self, *, owner: Optional[str] = None, repo: Optional[str] = None, **params) -> List[Milestone]:
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 params: Query parameters accepted by the milestones listing (state, sort, pagination, etc.).
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(self, *, owner: Optional[str] = None, repo: Optional[str] = None, **params) -> List[Milestone]:
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", self._client._repo_path("milestones", owner=owner, repo=repo), Milestone, params=params
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(self, *, owner: Optional[str] = None, repo: Optional[str] = None, **params) -> List[Milestone]:
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", self._client._repo_path("milestones", owner=owner, repo=repo), Milestone, params=params
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(