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

Commitb9d469b

Browse files
committed
feat: add ProjectPackageFile
Add ProjectPackageFile and the ability to list project packagepackage_files.Fixes#1372
1 parent6fde243 commitb9d469b

File tree

3 files changed

+104
-3
lines changed

3 files changed

+104
-3
lines changed

‎docs/gl_objects/packages.rst

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,25 @@ Filter the results by ``package_type`` or ``package_name`` ::
6666

6767
packages = group.packages.list(package_type='pypi')
6868

69+
70+
Project Package Files
71+
=====================
72+
73+
Reference
74+
---------
75+
76+
* v4 API:
77+
78+
+:class:`gitlab.v4.objects.ProjectPackageFile`
79+
+:class:`gitlab.v4.objects.ProjectPackageFileManager`
80+
+:attr:`gitlab.v4.objects.ProjectPackage.package_files`
81+
82+
* GitLab API: https://docs.gitlab.com/ee/api/packages.html#list-package-files
83+
84+
Examples
85+
--------
86+
87+
List package files for package in project::
88+
89+
package = project.packages.get(1)
90+
package_files = package.package_files.list()

‎gitlab/tests/objects/test_packages.py

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
importpytest
77
importresponses
88

9-
fromgitlab.v4.objectsimportGroupPackage,ProjectPackage
9+
fromgitlab.v4.objectsimportGroupPackage,ProjectPackage,ProjectPackageFile
1010

1111

1212
package_content= {
@@ -54,6 +54,51 @@
5454
],
5555
}
5656

57+
package_file_content= [
58+
{
59+
"id":25,
60+
"package_id":1,
61+
"created_at":"2018-11-07T15:25:52.199Z",
62+
"file_name":"my-app-1.5-20181107.152550-1.jar",
63+
"size":2421,
64+
"file_md5":"58e6a45a629910c6ff99145a688971ac",
65+
"file_sha1":"ebd193463d3915d7e22219f52740056dfd26cbfe",
66+
"pipelines": [
67+
{
68+
"id":123,
69+
"status":"pending",
70+
"ref":"new-pipeline",
71+
"sha":"a91957a858320c0e17f3a0eca7cfacbff50ea29a",
72+
"web_url":"https://example.com/foo/bar/pipelines/47",
73+
"created_at":"2016-08-11T11:28:34.085Z",
74+
"updated_at":"2016-08-11T11:32:35.169Z",
75+
"user": {
76+
"name":"Administrator",
77+
"avatar_url":"https://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon",
78+
},
79+
}
80+
],
81+
},
82+
{
83+
"id":26,
84+
"package_id":1,
85+
"created_at":"2018-11-07T15:25:56.776Z",
86+
"file_name":"my-app-1.5-20181107.152550-1.pom",
87+
"size":1122,
88+
"file_md5":"d90f11d851e17c5513586b4a7e98f1b2",
89+
"file_sha1":"9608d068fe88aff85781811a42f32d97feb440b5",
90+
},
91+
{
92+
"id":27,
93+
"package_id":1,
94+
"created_at":"2018-11-07T15:26:00.556Z",
95+
"file_name":"maven-metadata.xml",
96+
"size":767,
97+
"file_md5":"6dfd0cce1203145a927fef5e3a1c650c",
98+
"file_sha1":"d25932de56052d320a8ac156f745ece73f6a8cd2",
99+
},
100+
]
101+
57102

58103
@pytest.fixture
59104
defresp_list_packages():
@@ -94,6 +139,21 @@ def resp_delete_package(no_content):
94139
yieldrsps
95140

96141

142+
@pytest.fixture
143+
defresp_list_package_files():
144+
withresponses.RequestsMock()asrsps:
145+
rsps.add(
146+
method=responses.GET,
147+
url=re.compile(
148+
r"http://localhost/api/v4/projects/1/packages/1/package_files"
149+
),
150+
json=package_file_content,
151+
content_type="application/json",
152+
status=200,
153+
)
154+
yieldrsps
155+
156+
97157
deftest_list_project_packages(project,resp_list_packages):
98158
packages=project.packages.list()
99159
assertisinstance(packages,list)
@@ -117,3 +177,11 @@ def test_get_project_package(project, resp_get_package):
117177
deftest_delete_project_package(project,resp_delete_package):
118178
package=project.packages.get(1,lazy=True)
119179
package.delete()
180+
181+
182+
deftest_list_project_packages(project,resp_list_package_files):
183+
package=project.packages.get(1,lazy=True)
184+
package_files=package.package_files.list()
185+
assertisinstance(package_files,list)
186+
assertisinstance(package_files[0],ProjectPackageFile)
187+
assertpackage_files[0].id==25

‎gitlab/v4/objects/packages.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
fromgitlab.baseimportRESTManager,RESTObject
22
fromgitlab.mixinsimportDeleteMixin,GetMixin,ListMixin,ObjectDeleteMixin
33

4-
54
__all__= [
65
"GroupPackage",
76
"GroupPackageManager",
87
"ProjectPackage",
98
"ProjectPackageManager",
9+
"ProjectPackageFile",
10+
"ProjectPackageFileManager",
1011
]
1112

1213

@@ -28,7 +29,7 @@ class GroupPackageManager(ListMixin, RESTManager):
2829

2930

3031
classProjectPackage(ObjectDeleteMixin,RESTObject):
31-
pass
32+
_managers= (("package_files","ProjectPackageFileManager"),)
3233

3334

3435
classProjectPackageManager(ListMixin,GetMixin,DeleteMixin,RESTManager):
@@ -41,3 +42,13 @@ class ProjectPackageManager(ListMixin, GetMixin, DeleteMixin, RESTManager):
4142
"package_type",
4243
"package_name",
4344
)
45+
46+
47+
classProjectPackageFile(RESTObject):
48+
pass
49+
50+
51+
classProjectPackageFileManager(ListMixin,RESTManager):
52+
_path="/projects/%(project_id)s/packages/%(package_id)s/package_files"
53+
_obj_cls=ProjectPackageFile
54+
_from_parent_attrs= {"project_id":"project_id","package_id":"id"}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp