Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit0c22bd9

Browse files
chore: add type-hints to gitlab/v4/objects/files.py
1 parentd04e557 commit0c22bd9

File tree

2 files changed

+58
-13
lines changed

2 files changed

+58
-13
lines changed

‎gitlab/v4/objects/files.py

Lines changed: 58 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
importbase64
2+
fromtypingimportAny,Callable,cast,Dict,List,Optional,TYPE_CHECKING
3+
4+
importrequests
25

36
fromgitlabimportcli
47
fromgitlabimportexceptionsasexc
@@ -22,6 +25,8 @@
2225
classProjectFile(SaveMixin,ObjectDeleteMixin,RESTObject):
2326
_id_attr="file_path"
2427
_short_print_attr="file_path"
28+
file_path:str
29+
manager:"ProjectFileManager"
2530

2631
defdecode(self)->bytes:
2732
"""Returns the decoded content of the file.
@@ -31,7 +36,11 @@ def decode(self) -> bytes:
3136
"""
3237
returnbase64.b64decode(self.content)
3338

34-
defsave(self,branch,commit_message,**kwargs):
39+
# NOTE(jlvillal): Signature doesn't match SaveMixin.save() so ignore
40+
# type error
41+
defsave(# type: ignore
42+
self,branch:str,commit_message:str,**kwargs:Any
43+
)->None:
3544
"""Save the changes made to the file to the server.
3645
3746
The object is updated to match what the server returns.
@@ -50,7 +59,12 @@ def save(self, branch, commit_message, **kwargs):
5059
self.file_path=self.file_path.replace("/","%2F")
5160
super(ProjectFile,self).save(**kwargs)
5261

53-
defdelete(self,branch,commit_message,**kwargs):
62+
@exc.on_http_error(exc.GitlabDeleteError)
63+
# NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore
64+
# type error
65+
defdelete(# type: ignore
66+
self,branch:str,commit_message:str,**kwargs:Any
67+
)->None:
5468
"""Delete the file from the server.
5569
5670
Args:
@@ -80,7 +94,11 @@ class ProjectFileManager(GetMixin, CreateMixin, UpdateMixin, DeleteMixin, RESTMa
8094
)
8195

8296
@cli.register_custom_action("ProjectFileManager", ("file_path","ref"))
83-
defget(self,file_path,ref,**kwargs):
97+
# NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore
98+
# type error
99+
defget(# type: ignore
100+
self,file_path:str,ref:str,**kwargs:Any
101+
)->ProjectFile:
84102
"""Retrieve a single file.
85103
86104
Args:
@@ -95,15 +113,17 @@ def get(self, file_path, ref, **kwargs):
95113
Returns:
96114
object: The generated RESTObject
97115
"""
98-
returnGetMixin.get(self,file_path,ref=ref,**kwargs)
116+
returncast(ProjectFile,GetMixin.get(self,file_path,ref=ref,**kwargs))
99117

100118
@cli.register_custom_action(
101119
"ProjectFileManager",
102120
("file_path","branch","content","commit_message"),
103121
("encoding","author_email","author_name"),
104122
)
105123
@exc.on_http_error(exc.GitlabCreateError)
106-
defcreate(self,data,**kwargs):
124+
defcreate(
125+
self,data:Optional[Dict[str,Any]]=None,**kwargs:Any
126+
)->ProjectFile:
107127
"""Create a new object.
108128
109129
Args:
@@ -120,15 +140,23 @@ def create(self, data, **kwargs):
120140
GitlabCreateError: If the server cannot perform the request
121141
"""
122142

143+
ifTYPE_CHECKING:
144+
assertdataisnotNone
123145
self._check_missing_create_attrs(data)
124146
new_data=data.copy()
125147
file_path=new_data.pop("file_path").replace("/","%2F")
126148
path=f"{self.path}/{file_path}"
127149
server_data=self.gitlab.http_post(path,post_data=new_data,**kwargs)
150+
ifTYPE_CHECKING:
151+
assertisinstance(server_data,dict)
128152
returnself._obj_cls(self,server_data)
129153

130154
@exc.on_http_error(exc.GitlabUpdateError)
131-
defupdate(self,file_path,new_data=None,**kwargs):
155+
# NOTE(jlvillal): Signature doesn't match UpdateMixin.update() so ignore
156+
# type error
157+
defupdate(# type: ignore
158+
self,file_path:str,new_data:Optional[Dict[str,Any]]=None,**kwargs:Any
159+
)->Dict[str,Any]:
132160
"""Update an object on the server.
133161
134162
Args:
@@ -149,13 +177,20 @@ def update(self, file_path, new_data=None, **kwargs):
149177
data["file_path"]=file_path
150178
path=f"{self.path}/{file_path}"
151179
self._check_missing_update_attrs(data)
152-
returnself.gitlab.http_put(path,post_data=data,**kwargs)
180+
result=self.gitlab.http_put(path,post_data=data,**kwargs)
181+
ifTYPE_CHECKING:
182+
assertisinstance(result,dict)
183+
returnresult
153184

154185
@cli.register_custom_action(
155186
"ProjectFileManager", ("file_path","branch","commit_message")
156187
)
157188
@exc.on_http_error(exc.GitlabDeleteError)
158-
defdelete(self,file_path,branch,commit_message,**kwargs):
189+
# NOTE(jlvillal): Signature doesn't match DeleteMixin.delete() so ignore
190+
# type error
191+
defdelete(# type: ignore
192+
self,file_path:str,branch:str,commit_message:str,**kwargs:Any
193+
)->None:
159194
"""Delete a file on the server.
160195
161196
Args:
@@ -175,8 +210,14 @@ def delete(self, file_path, branch, commit_message, **kwargs):
175210
@cli.register_custom_action("ProjectFileManager", ("file_path","ref"))
176211
@exc.on_http_error(exc.GitlabGetError)
177212
defraw(
178-
self,file_path,ref,streamed=False,action=None,chunk_size=1024,**kwargs
179-
):
213+
self,
214+
file_path:str,
215+
ref:str,
216+
streamed:bool=False,
217+
action:Optional[Callable[...,Any]]=None,
218+
chunk_size:int=1024,
219+
**kwargs:Any,
220+
)->Optional[bytes]:
180221
"""Return the content of a file for a commit.
181222
182223
Args:
@@ -203,11 +244,13 @@ def raw(
203244
result=self.gitlab.http_get(
204245
path,query_data=query_data,streamed=streamed,raw=True,**kwargs
205246
)
247+
ifTYPE_CHECKING:
248+
assertisinstance(result,requests.Response)
206249
returnutils.response_content(result,streamed,action,chunk_size)
207250

208251
@cli.register_custom_action("ProjectFileManager", ("file_path","ref"))
209252
@exc.on_http_error(exc.GitlabListError)
210-
defblame(self,file_path,ref,**kwargs):
253+
defblame(self,file_path:str,ref:str,**kwargs:Any)->List[Dict[str,Any]]:
211254
"""Return the content of a file for a commit.
212255
213256
Args:
@@ -225,4 +268,7 @@ def blame(self, file_path, ref, **kwargs):
225268
file_path=file_path.replace("/","%2F").replace(".","%2E")
226269
path=f"{self.path}/{file_path}/blame"
227270
query_data= {"ref":ref}
228-
returnself.gitlab.http_list(path,query_data,**kwargs)
271+
result=self.gitlab.http_list(path,query_data,**kwargs)
272+
ifTYPE_CHECKING:
273+
assertisinstance(result,list)
274+
returnresult

‎pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ files = "."
1212
module = [
1313
"docs.*",
1414
"docs.ext.*",
15-
"gitlab.v4.objects.files",
1615
"tests.functional.*",
1716
"tests.functional.api.*",
1817
"tests.meta.*",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp