Skip to content

Commit 6c92f5b

Browse files
authored
2025-10-07 release: Version 0.1.9 (#19)
Changelog: Add username and slug to SetIamPolicy API
1 parent 99254a4 commit 6c92f5b

2 files changed

Lines changed: 43 additions & 7 deletions

File tree

kagglesdk/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = "0.1.8"
1+
__version__ = "0.1.9"
22

33
from kagglesdk.kaggle_client import KaggleClient
44
from kagglesdk.kaggle_creds import KaggleCredentials

kagglesdk/security/types/iam_service.py

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,19 @@ class GroupPrincipal(KaggleObject):
4646
r"""
4747
Attributes:
4848
id (int)
49+
slug (str)
4950
avatar (UserManagedGroup)
5051
"""
5152

5253
def __init__(self):
53-
self._id = 0
54+
self._id = None
55+
self._slug = None
5456
self._avatar = None
5557
self._freeze()
5658

5759
@property
5860
def id(self) -> int:
59-
return self._id
61+
return self._id or 0
6062

6163
@id.setter
6264
def id(self, id: int):
@@ -65,8 +67,23 @@ def id(self, id: int):
6567
return
6668
if not isinstance(id, int):
6769
raise TypeError('id must be of type int')
70+
del self.slug
6871
self._id = id
6972

73+
@property
74+
def slug(self) -> str:
75+
return self._slug or ""
76+
77+
@slug.setter
78+
def slug(self, slug: str):
79+
if slug is None:
80+
del self.slug
81+
return
82+
if not isinstance(slug, str):
83+
raise TypeError('slug must be of type str')
84+
del self.id
85+
self._slug = slug
86+
7087
@property
7188
def avatar(self) -> Optional['UserManagedGroup']:
7289
return self._avatar
@@ -382,17 +399,19 @@ class UserPrincipal(KaggleObject):
382399
r"""
383400
Attributes:
384401
id (int)
402+
user_name (str)
385403
avatar (UserAvatar)
386404
"""
387405

388406
def __init__(self):
389-
self._id = 0
407+
self._id = None
408+
self._user_name = None
390409
self._avatar = None
391410
self._freeze()
392411

393412
@property
394413
def id(self) -> int:
395-
return self._id
414+
return self._id or 0
396415

397416
@id.setter
398417
def id(self, id: int):
@@ -401,8 +420,23 @@ def id(self, id: int):
401420
return
402421
if not isinstance(id, int):
403422
raise TypeError('id must be of type int')
423+
del self.user_name
404424
self._id = id
405425

426+
@property
427+
def user_name(self) -> str:
428+
return self._user_name or ""
429+
430+
@user_name.setter
431+
def user_name(self, user_name: str):
432+
if user_name is None:
433+
del self.user_name
434+
return
435+
if not isinstance(user_name, str):
436+
raise TypeError('user_name must be of type str')
437+
del self.id
438+
self._user_name = user_name
439+
406440
@property
407441
def avatar(self) -> Optional['UserAvatar']:
408442
return self._avatar
@@ -422,7 +456,8 @@ def avatar(self, avatar: Optional['UserAvatar']):
422456
]
423457

424458
GroupPrincipal._fields = [
425-
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
459+
FieldMetadata("id", "id", "_id", int, None, PredefinedSerializer(), optional=True),
460+
FieldMetadata("slug", "slug", "_slug", str, None, PredefinedSerializer(), optional=True),
426461
FieldMetadata("avatar", "avatar", "_avatar", UserManagedGroup, None, KaggleObjectSerializer()),
427462
]
428463

@@ -454,7 +489,8 @@ def avatar(self, avatar: Optional['UserAvatar']):
454489
]
455490

456491
UserPrincipal._fields = [
457-
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
492+
FieldMetadata("id", "id", "_id", int, None, PredefinedSerializer(), optional=True),
493+
FieldMetadata("userName", "user_name", "_user_name", str, None, PredefinedSerializer(), optional=True),
458494
FieldMetadata("avatar", "avatar", "_avatar", UserAvatar, None, KaggleObjectSerializer()),
459495
]
460496

0 commit comments

Comments
 (0)