Skip to content

Commit 0499f7b

Browse files
committed
feat: implement User and Group attributes types shortcuts to match dynamically created model types
1 parent 9abb25f commit 0499f7b

File tree

3 files changed

+30
-12
lines changed

3 files changed

+30
-12
lines changed

doc/changelog.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
Changelog
22
=========
33

4+
[0.3.4] - Unreleased
5+
--------------------
6+
7+
Added
8+
^^^^^
9+
- Implement User and Group attributes types shortcuts to match dynamically created model types.
10+
411
[0.3.3] - 2025-05-21
512
--------------------
613

scim2_models/rfc7643/group.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class Group(Resource):
4141
display_name: Optional[str] = None
4242
"""A human-readable name for the Group."""
4343

44-
Members: ClassVar[type[ComplexAttribute]] = GroupMember
4544
members: Optional[list[GroupMember]] = None
4645
"""A list of members of the Group."""
46+
47+
Members: ClassVar[type[ComplexAttribute]] = GroupMember

scim2_models/rfc7643/user.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from enum import Enum
2-
from typing import ClassVar
32
from typing import Annotated
3+
from typing import ClassVar
44
from typing import Literal
55
from typing import Optional
66
from typing import Union
@@ -224,10 +224,11 @@ class User(Resource[AnyExtension]):
224224
"""Unique identifier for the User, typically used by the user to directly
225225
authenticate to the service provider."""
226226

227-
Name: ClassVar[type[ComplexAttribute]] = Name
228227
name: Optional[Name] = None
229228
"""The components of the user's real name."""
230229

230+
Name: ClassVar[type[ComplexAttribute]] = Name
231+
231232
display_name: Optional[str] = None
232233
"""The name of the User, suitable for display to end-users."""
233234

@@ -270,41 +271,50 @@ class User(Resource[AnyExtension]):
270271
password: Annotated[Optional[str], Mutability.write_only, Returned.never] = None
271272
"""The User's cleartext password."""
272273

273-
Emails: ClassVar[type[ComplexAttribute]] = Email
274274
emails: Optional[list[Email]] = None
275275
"""Email addresses for the user."""
276276

277-
PhoneNumbers: ClassVar[type[ComplexAttribute]] = PhoneNumber
277+
Emails: ClassVar[type[ComplexAttribute]] = Email
278+
278279
phone_numbers: Optional[list[PhoneNumber]] = None
279280
"""Phone numbers for the User."""
280281

281-
Ims: ClassVar[type[ComplexAttribute]] = Im
282+
PhoneNumbers: ClassVar[type[ComplexAttribute]] = PhoneNumber
283+
282284
ims: Optional[list[Im]] = None
283285
"""Instant messaging addresses for the User."""
284286

285-
Photos: ClassVar[type[ComplexAttribute]] = Photo
287+
Ims: ClassVar[type[ComplexAttribute]] = Im
288+
286289
photos: Optional[list[Photo]] = None
287290
"""URLs of photos of the User."""
288291

289-
Addresses: ClassVar[type[ComplexAttribute]] = Address
292+
Photos: ClassVar[type[ComplexAttribute]] = Photo
293+
290294
addresses: Optional[list[Address]] = None
291295
"""A physical mailing address for this User."""
292296

293-
Groups: ClassVar[type[ComplexAttribute]] = GroupMembership
297+
Addresses: ClassVar[type[ComplexAttribute]] = Address
298+
294299
groups: Annotated[Optional[list[GroupMembership]], Mutability.read_only] = None
295300
"""A list of groups to which the user belongs, either through direct
296301
membership, through nested groups, or dynamically calculated."""
297302

298-
Entitlements: ClassVar[type[ComplexAttribute]] = Entitlement
303+
Groups: ClassVar[type[ComplexAttribute]] = GroupMembership
304+
299305
entitlements: Optional[list[Entitlement]] = None
300306
"""A list of entitlements for the User that represent a thing the User
301307
has."""
302308

303-
Roles: ClassVar[type[ComplexAttribute]] = Role
309+
Entitlements: ClassVar[type[ComplexAttribute]] = Entitlement
310+
304311
roles: Optional[list[Role]] = None
305312
"""A list of roles for the User that collectively represent who the User
306313
is, e.g., 'Student', 'Faculty'."""
307314

308-
X509Certificates: ClassVar[type[ComplexAttribute]] = X509Certificate
315+
Roles: ClassVar[type[ComplexAttribute]] = Role
316+
309317
x509_certificates: Optional[list[X509Certificate]] = None
310318
"""A list of certificates issued to the User."""
319+
320+
X509Certificates: ClassVar[type[ComplexAttribute]] = X509Certificate

0 commit comments

Comments
 (0)