| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 623dac9 commit 7270523
29 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -72,8 +72,9 @@ def format_help(self) -> str: | |||
| 72 | 72 | ||
| 73 | 73 | ||
| 74 | 74 | def register_custom_action( | |
| 75 | + *, | ||
| 75 | 76 | cls_names: Union[str, Tuple[str, ...]], | |
| 76 | - mandatory: Tuple[str, ...] = (), | ||
| 77 | + required: Tuple[str, ...] = (), | ||
| 77 | 78 | optional: Tuple[str, ...] = (), | |
| 78 | 79 | custom_action: Optional[str] = None, | |
| 79 | 80 | ) -> Callable[[__F], __F]: | |
@@ -98,7 +99,7 @@ def wrapped_f(*args: Any, **kwargs: Any) -> Any: | |||
| 98 | 99 | custom_actions[final_name] = {} | |
| 99 | 100 | ||
| 100 | 101 | action = custom_action or f.__name__.replace("_", "-") | |
| 101 | - custom_actions[final_name][action] = (mandatory, optional, in_obj) | ||
| 102 | + custom_actions[final_name][action] = (required, optional, in_obj) | ||
| 102 | 103 | ||
| 103 | 104 | return cast(__F, wrapped_f) | |
| 104 | 105 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -550,7 +550,7 @@ class UserAgentDetailMixin(_RestObjectBase): | |||
| 550 | 550 | _updated_attrs: Dict[str, Any] | |
| 551 | 551 | manager: base.RESTManager | |
| 552 | 552 | ||
| 553 | - @cli.register_custom_action(("Snippet", "ProjectSnippet", "ProjectIssue")) | ||
| 553 | + @cli.register_custom_action(cls_names=("Snippet", "ProjectSnippet", "ProjectIssue")) | ||
| 554 | 554 | @exc.on_http_error(exc.GitlabGetError) | |
| 555 | 555 | def user_agent_detail(self, **kwargs: Any) -> Dict[str, Any]: | |
| 556 | 556 | """Get the user agent detail. | |
@@ -578,7 +578,8 @@ class AccessRequestMixin(_RestObjectBase): | |||
| 578 | 578 | manager: base.RESTManager | |
| 579 | 579 | ||
| 580 | 580 | @cli.register_custom_action( | |
| 581 | - ("ProjectAccessRequest", "GroupAccessRequest"), (), ("access_level",) | ||
| 581 | + cls_names=("ProjectAccessRequest", "GroupAccessRequest"), | ||
| 582 | + optional=("access_level",), | ||
| 582 | 583 | ) | |
| 583 | 584 | @exc.on_http_error(exc.GitlabUpdateError) | |
| 584 | 585 | def approve( | |
@@ -611,7 +612,7 @@ class DownloadMixin(_RestObjectBase): | |||
| 611 | 612 | _updated_attrs: Dict[str, Any] | |
| 612 | 613 | manager: base.RESTManager | |
| 613 | 614 | ||
| 614 | - @cli.register_custom_action(("GroupExport", "ProjectExport")) | ||
| 615 | + @cli.register_custom_action(cls_names=("GroupExport", "ProjectExport")) | ||
| 615 | 616 | @exc.on_http_error(exc.GitlabGetError) | |
| 616 | 617 | def download( | |
| 617 | 618 | self, | |
@@ -721,7 +722,7 @@ class SubscribableMixin(_RestObjectBase): | |||
| 721 | 722 | manager: base.RESTManager | |
| 722 | 723 | ||
| 723 | 724 | @cli.register_custom_action( | |
| 724 | - ("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel") | ||
| 725 | + cls_names=("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel") | ||
| 725 | 726 | ) | |
| 726 | 727 | @exc.on_http_error(exc.GitlabSubscribeError) | |
| 727 | 728 | def subscribe(self, **kwargs: Any) -> None: | |
@@ -741,7 +742,7 @@ def subscribe(self, **kwargs: Any) -> None: | |||
| 741 | 742 | self._update_attrs(server_data) | |
| 742 | 743 | ||
| 743 | 744 | @cli.register_custom_action( | |
| 744 | - ("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel") | ||
| 745 | + cls_names=("ProjectIssue", "ProjectMergeRequest", "ProjectLabel", "GroupLabel") | ||
| 745 | 746 | ) | |
| 746 | 747 | @exc.on_http_error(exc.GitlabUnsubscribeError) | |
| 747 | 748 | def unsubscribe(self, **kwargs: Any) -> None: | |
@@ -769,7 +770,7 @@ class TodoMixin(_RestObjectBase): | |||
| 769 | 770 | _updated_attrs: Dict[str, Any] | |
| 770 | 771 | manager: base.RESTManager | |
| 771 | 772 | ||
| 772 | - @cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest")) | ||
| 773 | + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) | ||
| 773 | 774 | @exc.on_http_error(exc.GitlabTodoError) | |
| 774 | 775 | def todo(self, **kwargs: Any) -> None: | |
| 775 | 776 | """Create a todo associated to the object. | |
@@ -793,7 +794,7 @@ class TimeTrackingMixin(_RestObjectBase): | |||
| 793 | 794 | _updated_attrs: Dict[str, Any] | |
| 794 | 795 | manager: base.RESTManager | |
| 795 | 796 | ||
| 796 | - @cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest")) | ||
| 797 | + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) | ||
| 797 | 798 | @exc.on_http_error(exc.GitlabTimeTrackingError) | |
| 798 | 799 | def time_stats(self, **kwargs: Any) -> Dict[str, Any]: | |
| 799 | 800 | """Get time stats for the object. | |
@@ -819,7 +820,9 @@ def time_stats(self, **kwargs: Any) -> Dict[str, Any]: | |||
| 819 | 820 | assert not isinstance(result, requests.Response) | |
| 820 | 821 | return result | |
| 821 | 822 | ||
| 822 | - @cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest"), ("duration",)) | ||
| 823 | + @cli.register_custom_action( | ||
| 824 | + cls_names=("ProjectIssue", "ProjectMergeRequest"), required=("duration",) | ||
| 825 | + ) | ||
| 823 | 826 | @exc.on_http_error(exc.GitlabTimeTrackingError) | |
| 824 | 827 | def time_estimate(self, duration: str, **kwargs: Any) -> Dict[str, Any]: | |
| 825 | 828 | """Set an estimated time of work for the object. | |
@@ -839,7 +842,7 @@ def time_estimate(self, duration: str, **kwargs: Any) -> Dict[str, Any]: | |||
| 839 | 842 | assert not isinstance(result, requests.Response) | |
| 840 | 843 | return result | |
| 841 | 844 | ||
| 842 | - @cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest")) | ||
| 845 | + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) | ||
| 843 | 846 | @exc.on_http_error(exc.GitlabTimeTrackingError) | |
| 844 | 847 | def reset_time_estimate(self, **kwargs: Any) -> Dict[str, Any]: | |
| 845 | 848 | """Resets estimated time for the object to 0 seconds. | |
@@ -857,7 +860,9 @@ def reset_time_estimate(self, **kwargs: Any) -> Dict[str, Any]: | |||
| 857 | 860 | assert not isinstance(result, requests.Response) | |
| 858 | 861 | return result | |
| 859 | 862 | ||
| 860 | - @cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest"), ("duration",)) | ||
| 863 | + @cli.register_custom_action( | ||
| 864 | + cls_names=("ProjectIssue", "ProjectMergeRequest"), required=("duration",) | ||
| 865 | + ) | ||
| 861 | 866 | @exc.on_http_error(exc.GitlabTimeTrackingError) | |
| 862 | 867 | def add_spent_time(self, duration: str, **kwargs: Any) -> Dict[str, Any]: | |
| 863 | 868 | """Add time spent working on the object. | |
@@ -877,7 +882,7 @@ def add_spent_time(self, duration: str, **kwargs: Any) -> Dict[str, Any]: | |||
| 877 | 882 | assert not isinstance(result, requests.Response) | |
| 878 | 883 | return result | |
| 879 | 884 | ||
| 880 | - @cli.register_custom_action(("ProjectIssue", "ProjectMergeRequest")) | ||
| 885 | + @cli.register_custom_action(cls_names=("ProjectIssue", "ProjectMergeRequest")) | ||
| 881 | 886 | @exc.on_http_error(exc.GitlabTimeTrackingError) | |
| 882 | 887 | def reset_spent_time(self, **kwargs: Any) -> Dict[str, Any]: | |
| 883 | 888 | """Resets the time spent working on the object. | |
@@ -904,7 +909,7 @@ class ParticipantsMixin(_RestObjectBase): | |||
| 904 | 909 | _updated_attrs: Dict[str, Any] | |
| 905 | 910 | manager: base.RESTManager | |
| 906 | 911 | ||
| 907 | - @cli.register_custom_action(("ProjectMergeRequest", "ProjectIssue")) | ||
| 912 | + @cli.register_custom_action(cls_names=("ProjectMergeRequest", "ProjectIssue")) | ||
| 908 | 913 | @exc.on_http_error(exc.GitlabListError) | |
| 909 | 914 | def participants(self, **kwargs: Any) -> Dict[str, Any]: | |
| 910 | 915 | """List the participants. | |
@@ -932,7 +937,8 @@ def participants(self, **kwargs: Any) -> Dict[str, Any]: | |||
| 932 | 937 | ||
| 933 | 938 | class BadgeRenderMixin(_RestManagerBase): | |
| 934 | 939 | @cli.register_custom_action( | |
| 935 | - ("GroupBadgeManager", "ProjectBadgeManager"), ("link_url", "image_url") | ||
| 940 | + cls_names=("GroupBadgeManager", "ProjectBadgeManager"), | ||
| 941 | + required=("link_url", "image_url"), | ||
| 936 | 942 | ) | |
| 937 | 943 | @exc.on_http_error(exc.GitlabRenderError) | |
| 938 | 944 | def render(self, link_url: str, image_url: str, **kwargs: Any) -> Dict[str, Any]: | |
@@ -1025,7 +1031,9 @@ def _get_upload_path(self) -> str: | |||
| 1025 | 1031 | data = self.attributes | |
| 1026 | 1032 | return self._upload_path.format(**data) | |
| 1027 | 1033 | ||
| 1028 | - @cli.register_custom_action(("Project", "ProjectWiki"), ("filename", "filepath")) | ||
| 1034 | + @cli.register_custom_action( | ||
| 1035 | + cls_names=("Project", "ProjectWiki"), required=("filename", "filepath") | ||
| 1036 | + ) | ||
| 1029 | 1037 | @exc.on_http_error(exc.GitlabUploadError) | |
| 1030 | 1038 | def upload( | |
| 1031 | 1039 | self, | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -44,7 +44,9 @@ def delete(self, **kwargs: Any) -> None: | |||
| 44 | 44 | self.gitlab.http_delete(path, **kwargs) | |
| 45 | 45 | ||
| 46 | 46 | @cli.register_custom_action( | |
| 47 | - "ProjectArtifactManager", ("ref_name", "job"), ("job_token",) | ||
| 47 | + cls_names="ProjectArtifactManager", | ||
| 48 | + required=("ref_name", "job"), | ||
| 49 | + optional=("job_token",), | ||
| 48 | 50 | ) | |
| 49 | 51 | @exc.on_http_error(exc.GitlabGetError) | |
| 50 | 52 | def download( | |
@@ -93,7 +95,8 @@ def download( | |||
| 93 | 95 | ) | |
| 94 | 96 | ||
| 95 | 97 | @cli.register_custom_action( | |
| 96 | - "ProjectArtifactManager", ("ref_name", "artifact_path", "job") | ||
| 98 | + cls_names="ProjectArtifactManager", | ||
| 99 | + required=("ref_name", "artifact_path", "job"), | ||
| 97 | 100 | ) | |
| 98 | 101 | @exc.on_http_error(exc.GitlabGetError) | |
| 99 | 102 | def raw( | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -31,8 +31,8 @@ class CiLintManager(CreateMixin, RESTManager): | |||
| 31 | 31 | ) | |
| 32 | 32 | ||
| 33 | 33 | @register_custom_action( | |
| 34 | - "CiLintManager", | ||
| 35 | - ("content",), | ||
| 34 | + cls_names="CiLintManager", | ||
| 35 | + required=("content",), | ||
| 36 | 36 | optional=("include_merged_yaml", "include_jobs"), | |
| 37 | 37 | ) | |
| 38 | 38 | def validate(self, *args: Any, **kwargs: Any) -> None: | |
@@ -63,8 +63,8 @@ def get(self, **kwargs: Any) -> ProjectCiLint: | |||
| 63 | 63 | return cast(ProjectCiLint, super().get(**kwargs)) | |
| 64 | 64 | ||
| 65 | 65 | @register_custom_action( | |
| 66 | - "ProjectCiLintManager", | ||
| 67 | - ("content",), | ||
| 66 | + cls_names="ProjectCiLintManager", | ||
| 67 | + required=("content",), | ||
| 68 | 68 | optional=("dry_run", "include_jobs", "ref"), | |
| 69 | 69 | ) | |
| 70 | 70 | def validate(self, *args: Any, **kwargs: Any) -> None: | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -28,7 +28,7 @@ class ProjectCommit(RESTObject): | |||
| 28 | 28 | discussions: ProjectCommitDiscussionManager | |
| 29 | 29 | statuses: "ProjectCommitStatusManager" | |
| 30 | 30 | ||
| 31 | - @cli.register_custom_action("ProjectCommit") | ||
| 31 | + @cli.register_custom_action(cls_names="ProjectCommit") | ||
| 32 | 32 | @exc.on_http_error(exc.GitlabGetError) | |
| 33 | 33 | def diff(self, **kwargs: Any) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]: | |
| 34 | 34 | """Generate the commit diff. | |
@@ -46,7 +46,7 @@ def diff(self, **kwargs: Any) -> Union[gitlab.GitlabList, List[Dict[str, Any]]]: | |||
| 46 | 46 | path = f"{self.manager.path}/{self.encoded_id}/diff" | |
| 47 | 47 | return self.manager.gitlab.http_list(path, **kwargs) | |
| 48 | 48 | ||
| 49 | - @cli.register_custom_action("ProjectCommit", ("branch",)) | ||
| 49 | + @cli.register_custom_action(cls_names="ProjectCommit", required=("branch",)) | ||
| 50 | 50 | @exc.on_http_error(exc.GitlabCherryPickError) | |
| 51 | 51 | def cherry_pick(self, branch: str, **kwargs: Any) -> None: | |
| 52 | 52 | """Cherry-pick a commit into a branch. | |
@@ -63,7 +63,7 @@ def cherry_pick(self, branch: str, **kwargs: Any) -> None: | |||
| 63 | 63 | post_data = {"branch": branch} | |
| 64 | 64 | self.manager.gitlab.http_post(path, post_data=post_data, **kwargs) | |
| 65 | 65 | ||
| 66 | - @cli.register_custom_action("ProjectCommit", optional=("type",)) | ||
| 66 | + @cli.register_custom_action(cls_names="ProjectCommit", optional=("type",)) | ||
| 67 | 67 | @exc.on_http_error(exc.GitlabGetError) | |
| 68 | 68 | def refs( | |
| 69 | 69 | self, type: str = "all", **kwargs: Any | |
@@ -85,7 +85,7 @@ def refs( | |||
| 85 | 85 | query_data = {"type": type} | |
| 86 | 86 | return self.manager.gitlab.http_list(path, query_data=query_data, **kwargs) | |
| 87 | 87 | ||
| 88 | - @cli.register_custom_action("ProjectCommit") | ||
| 88 | + @cli.register_custom_action(cls_names="ProjectCommit") | ||
| 89 | 89 | @exc.on_http_error(exc.GitlabGetError) | |
| 90 | 90 | def merge_requests( | |
| 91 | 91 | self, **kwargs: Any | |
@@ -105,7 +105,7 @@ def merge_requests( | |||
| 105 | 105 | path = f"{self.manager.path}/{self.encoded_id}/merge_requests" | |
| 106 | 106 | return self.manager.gitlab.http_list(path, **kwargs) | |
| 107 | 107 | ||
| 108 | - @cli.register_custom_action("ProjectCommit", ("branch",)) | ||
| 108 | + @cli.register_custom_action(cls_names="ProjectCommit", required=("branch",)) | ||
| 109 | 109 | @exc.on_http_error(exc.GitlabRevertError) | |
| 110 | 110 | def revert( | |
| 111 | 111 | self, branch: str, **kwargs: Any | |
@@ -127,7 +127,7 @@ def revert( | |||
| 127 | 127 | post_data = {"branch": branch} | |
| 128 | 128 | return self.manager.gitlab.http_post(path, post_data=post_data, **kwargs) | |
| 129 | 129 | ||
| 130 | - @cli.register_custom_action("ProjectCommit") | ||
| 130 | + @cli.register_custom_action(cls_names="ProjectCommit") | ||
| 131 | 131 | @exc.on_http_error(exc.GitlabGetError) | |
| 132 | 132 | def signature(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | |
| 133 | 133 | """Get the signature of the commit. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -42,8 +42,8 @@ class ProjectRegistryTagManager(DeleteMixin, RetrieveMixin, RESTManager): | |||
| 42 | 42 | _path = "/projects/{project_id}/registry/repositories/{repository_id}/tags" | |
| 43 | 43 | ||
| 44 | 44 | @cli.register_custom_action( | |
| 45 | - "ProjectRegistryTagManager", | ||
| 46 | - ("name_regex_delete",), | ||
| 45 | + cls_names="ProjectRegistryTagManager", | ||
| 46 | + required=("name_regex_delete",), | ||
| 47 | 47 | optional=("keep_n", "name_regex_keep", "older_than"), | |
| 48 | 48 | ) | |
| 49 | 49 | @exc.on_http_error(exc.GitlabDeleteError) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -36,7 +36,7 @@ class ProjectKeyManager(CRUDMixin, RESTManager): | |||
| 36 | 36 | _create_attrs = RequiredOptional(required=("title", "key"), optional=("can_push",)) | |
| 37 | 37 | _update_attrs = RequiredOptional(optional=("title", "can_push")) | |
| 38 | 38 | ||
| 39 | - @cli.register_custom_action("ProjectKeyManager", ("key_id",)) | ||
| 39 | + @cli.register_custom_action(cls_names="ProjectKeyManager", required=("key_id",)) | ||
| 40 | 40 | @exc.on_http_error(exc.GitlabProjectDeployKeyError) | |
| 41 | 41 | def enable( | |
| 42 | 42 | self, key_id: int, **kwargs: Any | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -23,8 +23,8 @@ class ProjectDeployment(SaveMixin, RESTObject): | |||
| 23 | 23 | mergerequests: ProjectDeploymentMergeRequestManager | |
| 24 | 24 | ||
| 25 | 25 | @cli.register_custom_action( | |
| 26 | - "ProjectDeployment", | ||
| 27 | - mandatory=("status",), | ||
| 26 | + cls_names="ProjectDeployment", | ||
| 27 | + required=("status",), | ||
| 28 | 28 | optional=("comment", "represented_as"), | |
| 29 | 29 | ) | |
| 30 | 30 | @exc.on_http_error(exc.GitlabDeploymentApprovalError) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -24,7 +24,7 @@ | |||
| 24 | 24 | ||
| 25 | 25 | ||
| 26 | 26 | class ProjectEnvironment(SaveMixin, ObjectDeleteMixin, RESTObject): | |
| 27 | - @cli.register_custom_action("ProjectEnvironment") | ||
| 27 | + @cli.register_custom_action(cls_names="ProjectEnvironment") | ||
| 28 | 28 | @exc.on_http_error(exc.GitlabStopError) | |
| 29 | 29 | def stop(self, **kwargs: Any) -> Union[Dict[str, Any], requests.Response]: | |
| 30 | 30 | """Stop the environment. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -109,7 +109,9 @@ class ProjectFileManager(GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTMa | |||
| 109 | 109 | optional=("encoding", "author_email", "author_name"), | |
| 110 | 110 | ) | |
| 111 | 111 | ||
| 112 | - @cli.register_custom_action("ProjectFileManager", ("file_path", "ref")) | ||
| 112 | + @cli.register_custom_action( | ||
| 113 | + cls_names="ProjectFileManager", required=("file_path", "ref") | ||
| 114 | + ) | ||
| 113 | 115 | # NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore | |
| 114 | 116 | # type error | |
| 115 | 117 | def get( # type: ignore | |
@@ -132,9 +134,9 @@ def get( # type: ignore | |||
| 132 | 134 | return cast(ProjectFile, GetMixin.get(self, file_path, ref=ref, **kwargs)) | |
| 133 | 135 | ||
| 134 | 136 | @cli.register_custom_action( | |
| 135 | - "ProjectFileManager", | ||
| 136 | - ("file_path", "branch", "content", "commit_message"), | ||
| 137 | - ("encoding", "author_email", "author_name"), | ||
| 137 | + cls_names="ProjectFileManager", | ||
| 138 | + required=("file_path", "branch", "content", "commit_message"), | ||
| 139 | + optional=("encoding", "author_email", "author_name"), | ||
| 138 | 140 | ) | |
| 139 | 141 | @exc.on_http_error(exc.GitlabCreateError) | |
| 140 | 142 | def create( | |
@@ -199,7 +201,8 @@ def update( # type: ignore | |||
| 199 | 201 | return result | |
| 200 | 202 | ||
| 201 | 203 | @cli.register_custom_action( | |
| 202 | - "ProjectFileManager", ("file_path", "branch", "commit_message") | ||
| 204 | + cls_names="ProjectFileManager", | ||
| 205 | + required=("file_path", "branch", "commit_message"), | ||
| 203 | 206 | ) | |
| 204 | 207 | @exc.on_http_error(exc.GitlabDeleteError) | |
| 205 | 208 | # NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore | |
@@ -224,7 +227,9 @@ def delete( # type: ignore | |||
| 224 | 227 | data = {"branch": branch, "commit_message": commit_message} | |
| 225 | 228 | self.gitlab.http_delete(path, query_data=data, **kwargs) | |
| 226 | 229 | ||
| 227 | - @cli.register_custom_action("ProjectFileManager", ("file_path", "ref")) | ||
| 230 | + @cli.register_custom_action( | ||
| 231 | + cls_names="ProjectFileManager", required=("file_path", "ref") | ||
| 232 | + ) | ||
| 228 | 233 | @exc.on_http_error(exc.GitlabGetError) | |
| 229 | 234 | def raw( | |
| 230 | 235 | self, | |
@@ -271,7 +276,9 @@ def raw( | |||
| 271 | 276 | result, streamed, action, chunk_size, iterator=iterator | |
| 272 | 277 | ) | |
| 273 | 278 | ||
| 274 | - @cli.register_custom_action("ProjectFileManager", ("file_path", "ref")) | ||
| 279 | + @cli.register_custom_action( | ||
| 280 | + cls_names="ProjectFileManager", required=("file_path", "ref") | ||
| 281 | + ) | ||
| 275 | 282 | @exc.on_http_error(exc.GitlabListError) | |
| 276 | 283 | def blame(self, file_path: str, ref: str, **kwargs: Any) -> List[Dict[str, Any]]: | |
| 277 | 284 | """Return the content of a file for a commit. | |
| Back | FazBrowse Home | New Git URL |
0 commit comments