Skip to content

Commit 03648d2

Browse files
committed
fix(models): changed wrong keyword argument for parameters schema and usages
1 parent a932163 commit 03648d2

File tree

9 files changed

+492
-23
lines changed

9 files changed

+492
-23
lines changed

pygitguardian/client.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
CreateTeam,
3232
CreateTeamInvitation,
3333
CreateTeamMember,
34+
CreateTeamMemberParameter,
3435
CursorPaginatedResponse,
3536
DeleteMember,
3637
Detail,
@@ -1011,9 +1012,10 @@ def list_teams(
10111012
parameters: Optional[TeamsParameter] = None,
10121013
extra_headers: Optional[Dict[str, str]] = None,
10131014
) -> Union[Detail, CursorPaginatedResponse[Team]]:
1015+
params = parameters.to_dict() if parameters else {}
10141016
response = self.get(
10151017
endpoint="teams",
1016-
data=parameters.to_dict() if parameters else {},
1018+
params=params,
10171019
extra_headers=extra_headers,
10181020
)
10191021

@@ -1189,11 +1191,13 @@ def create_team_member(
11891191
self,
11901192
team_id: int,
11911193
member: CreateTeamMember,
1194+
parameters: Optional[CreateTeamMemberParameter] = None,
11921195
extra_headers: Optional[Dict[str, str]] = None,
11931196
) -> Union[Detail, TeamMember]:
11941197
response = self.post(
11951198
endpoint=f"teams/{team_id}/team_memberships",
11961199
data=CreateTeamMember.to_dict(member),
1200+
params=parameters.to_dict() if parameters else {},
11971201
extra_headers=extra_headers,
11981202
)
11991203

pygitguardian/models.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -985,7 +985,7 @@ class Feedback(Base, FromDictMixin):
985985
@dataclass
986986
class SecretIncidentStats(Base, FromDictMixin):
987987
total: int
988-
severity_breakdown: dict[Severity, int]
988+
severity_breakdown: Dict[Severity, int]
989989

990990

991991
@dataclass
@@ -1165,7 +1165,7 @@ class SearchParameter(ToDictMixin):
11651165
@dataclass
11661166
class CursorPaginatedResponse(Generic[PaginatedData]):
11671167
status_code: int
1168-
data: list[PaginatedData]
1168+
data: List[PaginatedData]
11691169
prev: Optional[str] = None
11701170
next: Optional[str] = None
11711171

@@ -1174,7 +1174,7 @@ def from_response(
11741174
cls, response: "requests.Response", data_type: Type[PaginatedData]
11751175
) -> "CursorPaginatedResponse[PaginatedData]":
11761176
data = cast(
1177-
list[PaginatedData], data_type.from_dict(response.json(), many=True)
1177+
List[PaginatedData], data_type.from_dict(response.json(), many=True)
11781178
)
11791179
paginated_response = cls(status_code=response.status_code, data=data)
11801180

@@ -1205,7 +1205,7 @@ class MembersParametersSchema(BaseSchema):
12051205
ordering = fields.Str(allow_none=True)
12061206

12071207
@post_load
1208-
def return_members_parameters(self, data: dict[str, Any], **kwargs: dict[str, Any]):
1208+
def return_members_parameters(self, data: Dict[str, Any], **kwargs: Dict[str, Any]):
12091209
return MembersParameters(**data)
12101210

12111211

@@ -1239,10 +1239,9 @@ class MemberSchema(BaseSchema):
12391239
@post_load
12401240
def return_member(
12411241
self,
1242-
data: list[dict[str, Any]] | dict[str, Any],
1243-
**kwargs: dict[str, Any],
1242+
data: Dict[str, Any],
1243+
**kwargs: Dict[str, Any],
12441244
):
1245-
data = cast(dict[str, Any], data)
12461245
return Member(**data)
12471246

12481247

@@ -1256,8 +1255,8 @@ class UpdateMemberSchema(BaseSchema):
12561255

12571256
@post_dump
12581257
def access_level_value(
1259-
self, data: dict[str, Any], **kwargs: dict[str, Any]
1260-
) -> dict[str, Any]:
1258+
self, data: Dict[str, Any], **kwargs: Dict[str, Any]
1259+
) -> Dict[str, Any]:
12611260
if "access_level" in data:
12621261
data["access_level"] = AccessLevel(data["access_level"]).value
12631262
return data
@@ -1290,13 +1289,14 @@ class DeleteMember(Base, FromDictMixin):
12901289
DeleteMember.SCHEMA = DeleteMemberSchema()
12911290

12921291

1293-
class TeamsParameter(PaginationParameter, SearchParameter, ToDictMixin):
1292+
@dataclass
1293+
class TeamsParameter(PaginationParameter, SearchParameter, FromDictMixin, ToDictMixin):
12941294
is_global: Optional[bool] = None
12951295

12961296

12971297
TeamsParameterSchema = cast(
12981298
Type[BaseSchema],
1299-
marshmallow_dataclass.class_schema(DeleteMember, base_schema=BaseSchema),
1299+
marshmallow_dataclass.class_schema(TeamsParameter, base_schema=BaseSchema),
13001300
)
13011301
TeamsParameter.SCHEMA = TeamsParameterSchema()
13021302

@@ -1368,7 +1368,6 @@ class TeamInvitationParameter(PaginationParameter, ToDictMixin):
13681368
incident_permission: Optional[IncidentPermission] = None
13691369

13701370

1371-
@dataclass
13721371
class TeamInvitationParameterSchema(BaseSchema):
13731372
invitation_id = fields.Int(allow_none=True)
13741373
is_team_leader = fields.Bool(allow_none=True)
@@ -1404,8 +1403,8 @@ class TeamInvitationSchema(BaseSchema):
14041403
@post_load
14051404
def return_member(
14061405
self,
1407-
data: dict[str, Any],
1408-
**kwargs: dict[str, Any],
1406+
data: Dict[str, Any],
1407+
**kwargs: Dict[str, Any],
14091408
):
14101409
return TeamInvitation(**data)
14111410

@@ -1428,7 +1427,7 @@ class CreateTeamInvitationSchema(BaseSchema):
14281427
incident_permission = fields.Enum(IncidentPermission, by_value=True, required=True)
14291428

14301429
@post_load
1431-
def return_team_invitation(self, data: dict[str, Any], **kwargs: dict[str, Any]):
1430+
def return_team_invitation(self, data: Dict[str, Any], **kwargs: Dict[str, Any]):
14321431
return CreateTeamInvitation(**data)
14331432

14341433
class Meta:
@@ -1438,6 +1437,7 @@ class Meta:
14381437
CreateTeamInvitation.SCHEMA = CreateTeamInvitationSchema()
14391438

14401439

1440+
@dataclass
14411441
class TeamMemberParameter(PaginationParameter, SearchParameter, ToDictMixin):
14421442
is_team_leader: Optional[bool] = None
14431443
incident_permission: Optional[IncidentPermission] = None
@@ -1453,7 +1453,7 @@ class TeamMembershipParameterSchema(BaseSchema):
14531453

14541454
@post_load
14551455
def return_team_membership_parameter(
1456-
self, data: dict[str, Any], **kwargs: dict[str, Any]
1456+
self, data: Dict[str, Any], **kwargs: Dict[str, Any]
14571457
):
14581458
return TeamMemberParameter(**data)
14591459

@@ -1483,7 +1483,7 @@ class TeamMemberSchema(BaseSchema):
14831483
incident_permission = fields.Enum(IncidentPermission, by_value=True, required=True)
14841484

14851485
@post_load
1486-
def return_team_membership(self, data: dict[str, Any], **kwargs: dict[str, Any]):
1486+
def return_team_membership(self, data: Dict[str, Any], **kwargs: Dict[str, Any]):
14871487
return TeamMember(**data)
14881488

14891489

@@ -1520,7 +1520,7 @@ class CreateTeamMemberSchema(BaseSchema):
15201520

15211521
@post_load
15221522
def return_create_team_membership(
1523-
self, data: dict[str, Any], **kwargs: dict[str, Any]
1523+
self, data: Dict[str, Any], **kwargs: Dict[str, Any]
15241524
):
15251525
return CreateTeamMember(**data)
15261526

@@ -1549,8 +1549,8 @@ class TeamSourceParameters(PaginationParameter, SearchParameter, ToDictMixin):
15491549
@dataclass
15501550
class UpdateTeamSource(Base, FromDictMixin):
15511551
team_id: int
1552-
sources_to_add: list[int]
1553-
sources_to_remove: list[int]
1552+
sources_to_add: List[int]
1553+
sources_to_remove: List[int]
15541554

15551555

15561556
UpdateTeamSourceSchema = cast(
@@ -1595,7 +1595,7 @@ class InvitationSchema(BaseSchema):
15951595
date = fields.DateTime(required=True)
15961596

15971597
@post_load
1598-
def return_invitation(self, data: dict[str, Any], **kwargs: dict[str, Any]):
1598+
def return_invitation(self, data: Dict[str, Any], **kwargs: Dict[str, Any]):
15991599
return Invitation(**data)
16001600

16011601

@@ -1627,7 +1627,7 @@ class CreateInvitationSchema(BaseSchema):
16271627
access_level = fields.Enum(AccessLevel, by_value=True, required=True)
16281628

16291629
@post_load
1630-
def return_invitation(self, data: dict[str, Any], **kwargs: dict[str, Any]):
1630+
def return_invitation(self, data: Dict[str, Any], **kwargs: Dict[str, Any]):
16311631
return CreateInvitation(**data)
16321632

16331633

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
interactions:
2+
- request:
3+
body: '{"member_id": 12, "is_team_leader": false, "incident_permission": "can_view"}'
4+
headers:
5+
Accept:
6+
- '*/*'
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Connection:
10+
- keep-alive
11+
Content-Length:
12+
- '77'
13+
Content-Type:
14+
- application/json
15+
User-Agent:
16+
- pygitguardian/1.18.0 (Darwin;py3.11.8)
17+
method: POST
18+
uri: https://api.gitguardian.com/v1/teams/9/team_memberships?send_email=False
19+
response:
20+
body:
21+
string: '{"id":11,"team_id":9,"member_id":12,"is_team_leader":false,"team_permission":"cannot_manage","incident_permission":"can_view"}'
22+
headers:
23+
Access-Control-Expose-Headers:
24+
- X-App-Version
25+
Allow:
26+
- GET, POST, HEAD, OPTIONS
27+
Connection:
28+
- keep-alive
29+
Content-Length:
30+
- '126'
31+
Content-Type:
32+
- application/json
33+
Cross-Origin-Opener-Policy:
34+
- same-origin
35+
Date:
36+
- Fri, 06 Dec 2024 14:37:57 GMT
37+
Referrer-Policy:
38+
- same-origin
39+
Server:
40+
- nginx/1.24.0
41+
Vary:
42+
- Cookie
43+
X-App-Version:
44+
- dev
45+
X-Content-Type-Options:
46+
- nosniff
47+
X-Frame-Options:
48+
- DENY
49+
X-Request-ID:
50+
- 9bdfa17e97c34bd4496abfdc27eb8553
51+
X-SCA-Engine-Version:
52+
- 2.2.0
53+
X-Secrets-Engine-Version:
54+
- 2.127.0
55+
status:
56+
code: 201
57+
message: Created
58+
version: 1
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
Accept:
6+
- '*/*'
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Connection:
10+
- keep-alive
11+
User-Agent:
12+
- pygitguardian/1.18.0 (Darwin;py3.11.8)
13+
method: GET
14+
uri: https://api.gitguardian.com/v1/teams?is_global=True
15+
response:
16+
body:
17+
string: '[{"id":6,"is_global":true,"name":"All incidents","description":null,"gitguardian_url":"http://localhost:3000/workspace/6/settings/user/teams/6"}]'
18+
headers:
19+
Access-Control-Expose-Headers:
20+
- X-App-Version
21+
Allow:
22+
- GET, POST, HEAD, OPTIONS
23+
Connection:
24+
- keep-alive
25+
Content-Length:
26+
- '145'
27+
Content-Type:
28+
- application/json
29+
Cross-Origin-Opener-Policy:
30+
- same-origin
31+
Date:
32+
- Fri, 06 Dec 2024 14:26:03 GMT
33+
Link:
34+
- ''
35+
Referrer-Policy:
36+
- same-origin
37+
Server:
38+
- nginx/1.24.0
39+
Vary:
40+
- Cookie
41+
X-App-Version:
42+
- dev
43+
X-Content-Type-Options:
44+
- nosniff
45+
X-Frame-Options:
46+
- DENY
47+
X-Per-Page:
48+
- '20'
49+
X-Request-ID:
50+
- 4f67e29113b6a59a311497ba05953fda
51+
X-SCA-Engine-Version:
52+
- 2.2.0
53+
X-Secrets-Engine-Version:
54+
- 2.127.0
55+
status:
56+
code: 200
57+
message: OK
58+
version: 1
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
interactions:
2+
- request:
3+
body: null
4+
headers:
5+
Accept:
6+
- '*/*'
7+
Accept-Encoding:
8+
- gzip, deflate
9+
Connection:
10+
- keep-alive
11+
User-Agent:
12+
- pygitguardian/1.18.0 (Darwin;py3.11.8)
13+
method: GET
14+
uri: https://api.gitguardian.com/v1/sources?type=azure_devops
15+
response:
16+
body:
17+
string: '[{"id":124,"type":"azure_devops","full_name":"gg-integration-test /
18+
gg-test / default_branch","health":"at_risk","source_criticality":"unknown","default_branch":"test","default_branch_head":null,"open_incidents_count":19,"closed_incidents_count":0,"last_scan":{"date":"2024-12-06T12:27:52.346395Z","status":"finished","failing_reason":"","commits_scanned":23,"duration":"0.437131","branches_scanned":1,"progress":100},"monitored":true,"visibility":"private","external_id":"05b69081-f346-4022-8784-198f50aed182","secret_incidents_breakdown":{"open_secret_incidents":{"total":19,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":19}},"closed_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}}},"url":"https://dev.azure.com/gg-integration-test/gg-test/_git/default_branch"},{"id":125,"type":"azure_devops","full_name":"gg-integration-test
19+
/ gg-test / gg-test","health":"at_risk","source_criticality":"unknown","default_branch":"main","default_branch_head":null,"open_incidents_count":19,"closed_incidents_count":0,"last_scan":{"date":"2024-12-06T12:27:52.346418Z","status":"finished","failing_reason":"","commits_scanned":43,"duration":"0.492489","branches_scanned":1,"progress":100},"monitored":true,"visibility":"private","external_id":"7655868e-bb15-47ab-bd62-abd97212e5e8","secret_incidents_breakdown":{"open_secret_incidents":{"total":19,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":19}},"closed_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}}},"url":"https://dev.azure.com/gg-integration-test/gg-test/_git/gg-test"},{"id":126,"type":"azure_devops","full_name":"gg-integration-test
20+
/ gg-test / huge_repo","health":"safe","source_criticality":"unknown","default_branch":"master","default_branch_head":null,"open_incidents_count":0,"closed_incidents_count":0,"last_scan":{"date":"2024-12-06T12:27:52.346442Z","status":"finished","failing_reason":"","commits_scanned":1007,"duration":"1.102781","branches_scanned":1,"progress":100},"monitored":true,"visibility":"private","external_id":"455c4e0c-6dc3-48ce-a0e7-819d9a8d7523","secret_incidents_breakdown":{"open_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}},"closed_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}}},"url":"https://dev.azure.com/gg-integration-test/gg-test/_git/huge_repo"},{"id":127,"type":"azure_devops","full_name":"gg-integration-test
21+
/ gg-test / new_repo","health":"safe","source_criticality":"unknown","default_branch":"master","default_branch_head":null,"open_incidents_count":0,"closed_incidents_count":0,"last_scan":{"date":"2024-12-06T12:27:52.346464Z","status":"finished","failing_reason":"","commits_scanned":1,"duration":"0.216094","branches_scanned":1,"progress":100},"monitored":true,"visibility":"private","external_id":"f9b583fb-dcfd-46ec-8938-44b427d3e596","secret_incidents_breakdown":{"open_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}},"closed_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}}},"url":"https://dev.azure.com/gg-integration-test/gg-test/_git/new_repo"},{"id":128,"type":"azure_devops","full_name":"gg-integration-test
22+
/ gg-test / t e s t i n g","health":"at_risk","source_criticality":"unknown","default_branch":"main","default_branch_head":null,"open_incidents_count":110,"closed_incidents_count":0,"last_scan":{"date":"2024-12-06T12:27:52.346299Z","status":"finished","failing_reason":"","commits_scanned":113,"duration":"7.597231","branches_scanned":2,"progress":100},"monitored":true,"visibility":"private","external_id":"8a132329-0c77-4efc-a18a-882bda6ab28b","secret_incidents_breakdown":{"open_secret_incidents":{"total":110,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":110}},"closed_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}}},"url":"https://dev.azure.com/gg-integration-test/gg-test/_git/t%20e%20s%20t%20i%20n%20g"},{"id":129,"type":"azure_devops","full_name":"gg-integration-test
23+
/ gg-test / test abc","health":"at_risk","source_criticality":"unknown","default_branch":"main","default_branch_head":null,"open_incidents_count":28,"closed_incidents_count":0,"last_scan":{"date":"2024-12-06T12:27:52.346367Z","status":"finished","failing_reason":"","commits_scanned":55,"duration":"0.623082","branches_scanned":1,"progress":100},"monitored":true,"visibility":"private","external_id":"2aa16b64-2fb2-4639-afeb-70c0c4e8a267","secret_incidents_breakdown":{"open_secret_incidents":{"total":28,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":28}},"closed_secret_incidents":{"total":0,"severity_breakdown":{"critical":0,"high":0,"medium":0,"low":0,"info":0,"unknown":0}}},"url":"https://dev.azure.com/gg-integration-test/gg-test/_git/test%20abc"}]'
24+
headers:
25+
Access-Control-Expose-Headers:
26+
- X-App-Version
27+
Allow:
28+
- GET, HEAD, OPTIONS
29+
Connection:
30+
- keep-alive
31+
Content-Length:
32+
- '5158'
33+
Content-Type:
34+
- application/json
35+
Cross-Origin-Opener-Policy:
36+
- same-origin
37+
Date:
38+
- Fri, 06 Dec 2024 14:41:54 GMT
39+
Link:
40+
- ''
41+
Referrer-Policy:
42+
- same-origin
43+
Server:
44+
- nginx/1.24.0
45+
Vary:
46+
- Cookie
47+
X-App-Version:
48+
- dev
49+
X-Content-Type-Options:
50+
- nosniff
51+
X-Frame-Options:
52+
- DENY
53+
X-Per-Page:
54+
- '20'
55+
X-Request-ID:
56+
- 61df3a3b0044668d310ce7357488d6d8
57+
X-SCA-Engine-Version:
58+
- 2.2.0
59+
X-Secrets-Engine-Version:
60+
- 2.127.0
61+
status:
62+
code: 200
63+
message: OK
64+
version: 1

0 commit comments

Comments
 (0)