Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion kagglesdk/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = "0.1.8"
__version__ = "0.1.9"

from kagglesdk.kaggle_client import KaggleClient
from kagglesdk.kaggle_creds import KaggleCredentials
Expand Down
48 changes: 42 additions & 6 deletions kagglesdk/security/types/iam_service.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,19 @@ class GroupPrincipal(KaggleObject):
r"""
Attributes:
id (int)
slug (str)
avatar (UserManagedGroup)
"""

def __init__(self):
self._id = 0
self._id = None
self._slug = None
self._avatar = None
self._freeze()

@property
def id(self) -> int:
return self._id
return self._id or 0

@id.setter
def id(self, id: int):
Expand All @@ -65,8 +67,23 @@ def id(self, id: int):
return
if not isinstance(id, int):
raise TypeError('id must be of type int')
del self.slug
self._id = id

@property
def slug(self) -> str:
return self._slug or ""

@slug.setter
def slug(self, slug: str):
if slug is None:
del self.slug
return
if not isinstance(slug, str):
raise TypeError('slug must be of type str')
del self.id
self._slug = slug

@property
def avatar(self) -> Optional['UserManagedGroup']:
return self._avatar
Expand Down Expand Up @@ -382,17 +399,19 @@ class UserPrincipal(KaggleObject):
r"""
Attributes:
id (int)
user_name (str)
avatar (UserAvatar)
"""

def __init__(self):
self._id = 0
self._id = None
self._user_name = None
self._avatar = None
self._freeze()

@property
def id(self) -> int:
return self._id
return self._id or 0

@id.setter
def id(self, id: int):
Expand All @@ -401,8 +420,23 @@ def id(self, id: int):
return
if not isinstance(id, int):
raise TypeError('id must be of type int')
del self.user_name
self._id = id

@property
def user_name(self) -> str:
return self._user_name or ""

@user_name.setter
def user_name(self, user_name: str):
if user_name is None:
del self.user_name
return
if not isinstance(user_name, str):
raise TypeError('user_name must be of type str')
del self.id
self._user_name = user_name

@property
def avatar(self) -> Optional['UserAvatar']:
return self._avatar
Expand All @@ -422,7 +456,8 @@ def avatar(self, avatar: Optional['UserAvatar']):
]

GroupPrincipal._fields = [
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
FieldMetadata("id", "id", "_id", int, None, PredefinedSerializer(), optional=True),
FieldMetadata("slug", "slug", "_slug", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("avatar", "avatar", "_avatar", UserManagedGroup, None, KaggleObjectSerializer()),
]

Expand Down Expand Up @@ -454,7 +489,8 @@ def avatar(self, avatar: Optional['UserAvatar']):
]

UserPrincipal._fields = [
FieldMetadata("id", "id", "_id", int, 0, PredefinedSerializer()),
FieldMetadata("id", "id", "_id", int, None, PredefinedSerializer(), optional=True),
FieldMetadata("userName", "user_name", "_user_name", str, None, PredefinedSerializer(), optional=True),
FieldMetadata("avatar", "avatar", "_avatar", UserAvatar, None, KaggleObjectSerializer()),
]