maleo-identity 0.1.24__py3-none-any.whl → 0.1.27__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,3 +15,17 @@ class IdentifierType(StrEnum):
15
15
  @property
16
16
  def column(self) -> str:
17
17
  return self.value
18
+
19
+
20
+ class ExpandableField(StrEnum):
21
+ GENDER = "gender"
22
+ BLOOD_TYPE = "blood_type"
23
+
24
+ @classmethod
25
+ def choices(cls) -> ListOfStrs:
26
+ return [e.value for e in cls]
27
+
28
+
29
+ OptExpandableField = ExpandableField | None
30
+ ListOfExpandableFields = list[ExpandableField]
31
+ OptListOfExpandableFields = ListOfExpandableFields | None
@@ -41,7 +41,9 @@ class CompositeAPIKeyIdentifier(
41
41
  Literal[IdentifierType.COMPOSITE],
42
42
  Field(IdentifierType.COMPOSITE, description="Identifier's type"),
43
43
  ] = IdentifierType.COMPOSITE
44
- value: Annotated[CompositeIdentifierType, Field(..., description="Identifier's value")]
44
+ value: Annotated[
45
+ CompositeIdentifierType, Field(..., description="Identifier's value")
46
+ ]
45
47
 
46
48
 
47
49
  AnyAPIKeyIdentifier = (
@@ -49,7 +49,9 @@ class CompositeOrganizationRelationIdentifier(
49
49
  Literal[IdentifierType.COMPOSITE],
50
50
  Field(IdentifierType.COMPOSITE, description="Identifier's type"),
51
51
  ] = IdentifierType.COMPOSITE
52
- value: Annotated[CompositeIdentifierType, Field(..., description="Identifier's value")]
52
+ value: Annotated[
53
+ CompositeIdentifierType, Field(..., description="Identifier's value")
54
+ ]
53
55
 
54
56
 
55
57
  AnyOrganizationRelationIdentifier = (
@@ -37,7 +37,9 @@ class CompositeUserMedicalRoleIdentifier(
37
37
  Literal[IdentifierType.COMPOSITE],
38
38
  Field(IdentifierType.COMPOSITE, description="Identifier's type"),
39
39
  ] = IdentifierType.COMPOSITE
40
- value: Annotated[CompositeIdentifierType, Field(..., description="Identifier's value")]
40
+ value: Annotated[
41
+ CompositeIdentifierType, Field(..., description="Identifier's value")
42
+ ]
41
43
 
42
44
 
43
45
  AnyUserMedicalRoleIdentifier = (
@@ -39,7 +39,9 @@ class CompositeUserOrganizationRoleIdentifier(
39
39
  Literal[IdentifierType.COMPOSITE],
40
40
  Field(IdentifierType.COMPOSITE, description="Identifier's type"),
41
41
  ] = IdentifierType.COMPOSITE
42
- value: Annotated[CompositeIdentifierType, Field(..., description="Identifier's value")]
42
+ value: Annotated[
43
+ CompositeIdentifierType, Field(..., description="Identifier's value")
44
+ ]
43
45
 
44
46
 
45
47
  AnyUserOrganizationRoleIdentifier = (
@@ -2,8 +2,8 @@ from pydantic import BaseModel, Field
2
2
  from typing import Annotated, Generic, Literal, TypeGuard
3
3
  from uuid import UUID
4
4
  from maleo.schemas.mixins.identity import Identifier
5
- from maleo.types.string import OptStrT
6
- from ..enums.user_profile import IdentifierType
5
+ from maleo.types.string import OptStr, OptStrT
6
+ from ..enums.user_profile import IdentifierType, OptListOfExpandableFields
7
7
  from ..types.user_profile import IdentifierValueType
8
8
 
9
9
 
@@ -37,6 +37,21 @@ class EndingTitle(BaseModel, Generic[OptStrT]):
37
37
  ]
38
38
 
39
39
 
40
+ class Avatar(BaseModel):
41
+ content: Annotated[bytes, Field(..., description="Avatar's content")]
42
+ content_type: Annotated[
43
+ OptStr, Field(None, description="Avatar's content type")
44
+ ] = None
45
+ filename: Annotated[str, Field(..., description="Avatar's filename")]
46
+
47
+
48
+ OptAvatar = Avatar | None
49
+
50
+
51
+ class AvatarMixin(BaseModel):
52
+ avatar: Annotated[OptAvatar, Field(None, description="Avatar")]
53
+
54
+
40
55
  class AvatarName(BaseModel, Generic[OptStrT]):
41
56
  avatar_name: Annotated[OptStrT, Field(..., description="User's Avatar Name")]
42
57
 
@@ -45,6 +60,12 @@ class AvatarUrl(BaseModel, Generic[OptStrT]):
45
60
  avatar_url: Annotated[OptStrT, Field(..., description="User's Avatar URL")]
46
61
 
47
62
 
63
+ class Expand(BaseModel):
64
+ expand: Annotated[
65
+ OptListOfExpandableFields, Field(None, description="Expanded field(s)")
66
+ ] = None
67
+
68
+
48
69
  class UserProfileIdentifier(Identifier[IdentifierType, IdentifierValueType]):
49
70
  @property
50
71
  def column_and_value(self) -> tuple[str, IdentifierValueType]:
@@ -43,7 +43,9 @@ class CompositeUserSystemRoleIdentifier(
43
43
  Literal[IdentifierType.COMPOSITE],
44
44
  Field(IdentifierType.COMPOSITE, description="Identifier's type"),
45
45
  ] = IdentifierType.COMPOSITE
46
- value: Annotated[CompositeIdentifierType, Field(..., description="Identifier's value")]
46
+ value: Annotated[
47
+ CompositeIdentifierType, Field(..., description="Identifier's value")
48
+ ]
47
49
 
48
50
 
49
51
  AnyUserSystemRoleIdentifier = (
@@ -246,7 +246,7 @@ class UserProfileSchema(
246
246
  LifecycleTimestamp,
247
247
  DataIdentifier,
248
248
  ):
249
- pass
249
+ avatar_url: Annotated[OptStr, Field(None, description="Avatar URL")]
250
250
 
251
251
 
252
252
  OptUserProfileSchema = UserProfileSchema | None
@@ -22,7 +22,6 @@ from maleo.schemas.mixins.identity import (
22
22
  UUIDs,
23
23
  IntUserId,
24
24
  IntUserIds,
25
- IntOrganizationIds,
26
25
  BirthDate,
27
26
  )
28
27
  from maleo.schemas.mixins.sort import convert as convert_sort
@@ -38,7 +37,7 @@ from maleo.types.dict import StrToAnyDict
38
37
  from maleo.types.integer import OptListOfInts
39
38
  from maleo.types.string import OptStr
40
39
  from maleo.types.uuid import OptListOfUUIDs
41
- from ..enums.user_profile import IdentifierType
40
+ from ..enums.user_profile import IdentifierType, OptListOfExpandableFields
42
41
  from ..mixins.common import (
43
42
  IdCard,
44
43
  FullName,
@@ -50,12 +49,15 @@ from ..mixins.user_profile import (
50
49
  MiddleName,
51
50
  LastName,
52
51
  EndingTitle,
52
+ AvatarMixin,
53
+ Expand,
53
54
  UserProfileIdentifier,
54
55
  )
55
56
  from ..types.user_profile import IdentifierValueType
56
57
 
57
58
 
58
- class CreateParameter(
59
+ class StandardCreateData(
60
+ AvatarMixin,
59
61
  BloodTypeMixin[OptBloodType],
60
62
  GenderMixin[OptGender],
61
63
  BirthDate[OptDate],
@@ -67,26 +69,33 @@ class CreateParameter(
67
69
  FirstName[str],
68
70
  LeadingTitle[OptStr],
69
71
  IdCard[OptStr],
72
+ ):
73
+ pass
74
+
75
+
76
+ class FullCreateData(
77
+ StandardCreateData,
70
78
  IntUserId[int],
71
79
  ):
72
80
  pass
73
81
 
74
82
 
83
+ class CreateParameter(Expand, FullCreateData):
84
+ pass
85
+
86
+
75
87
  class ReadMultipleParameter(
88
+ Expand,
76
89
  ReadPaginatedMultipleParameter,
77
90
  BloodTypesMixin[OptListOfBloodTypes],
78
91
  GendersMixin[OptListOfGenders],
92
+ IntUserIds[OptListOfInts],
79
93
  UUIDs[OptListOfUUIDs],
80
94
  Ids[OptListOfInts],
81
- IntOrganizationIds[OptListOfInts],
82
- IntUserIds[OptListOfInts],
83
95
  ):
84
- user_ids: Annotated[OptListOfInts, Field(None, description="User's IDs")] = None
85
- organization_ids: Annotated[
86
- OptListOfInts, Field(None, description="Organization's IDs")
87
- ] = None
88
96
  ids: Annotated[OptListOfInts, Field(None, description="Ids")] = None
89
97
  uuids: Annotated[OptListOfUUIDs, Field(None, description="UUIDs")] = None
98
+ user_ids: Annotated[OptListOfInts, Field(None, description="User's IDs")] = None
90
99
  genders: Annotated[OptListOfGenders, Field(None, description="Genders")] = None
91
100
  blood_types: Annotated[
92
101
  OptListOfBloodTypes, Field(None, description="Blood Types")
@@ -95,17 +104,17 @@ class ReadMultipleParameter(
95
104
  @property
96
105
  def _query_param_fields(self) -> set[str]:
97
106
  return {
98
- "user_ids",
99
- "organization_ids",
100
107
  "ids",
101
108
  "uuids",
102
109
  "statuses",
110
+ "user_ids",
103
111
  "genders",
104
112
  "blood_types",
105
113
  "search",
106
114
  "page",
107
115
  "limit",
108
116
  "use_cache",
117
+ "expand",
109
118
  }
110
119
 
111
120
  def to_query_params(self) -> StrToAnyDict:
@@ -118,15 +127,18 @@ class ReadMultipleParameter(
118
127
  return params
119
128
 
120
129
 
121
- class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
130
+ class ReadSingleParameter(Expand, BaseReadSingleParameter[UserProfileIdentifier]):
122
131
  @classmethod
123
132
  def from_identifier(
124
133
  cls,
125
134
  identifier: UserProfileIdentifier,
126
135
  statuses: ListOfDataStatuses = FULL_DATA_STATUSES,
127
136
  use_cache: bool = True,
137
+ expand: OptListOfExpandableFields = None,
128
138
  ) -> "ReadSingleParameter":
129
- return cls(identifier=identifier, statuses=statuses, use_cache=use_cache)
139
+ return cls(
140
+ identifier=identifier, statuses=statuses, use_cache=use_cache, expand=expand
141
+ )
130
142
 
131
143
  @overload
132
144
  @classmethod
@@ -136,6 +148,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
136
148
  identifier_value: int,
137
149
  statuses: ListOfDataStatuses = list(FULL_DATA_STATUSES),
138
150
  use_cache: bool = True,
151
+ expand: OptListOfExpandableFields = None,
139
152
  ) -> "ReadSingleParameter": ...
140
153
  @overload
141
154
  @classmethod
@@ -145,6 +158,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
145
158
  identifier_value: UUID,
146
159
  statuses: ListOfDataStatuses = list(FULL_DATA_STATUSES),
147
160
  use_cache: bool = True,
161
+ expand: OptListOfExpandableFields = None,
148
162
  ) -> "ReadSingleParameter": ...
149
163
  @overload
150
164
  @classmethod
@@ -154,6 +168,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
154
168
  identifier_value: str,
155
169
  statuses: ListOfDataStatuses = list(FULL_DATA_STATUSES),
156
170
  use_cache: bool = True,
171
+ expand: OptListOfExpandableFields = None,
157
172
  ) -> "ReadSingleParameter": ...
158
173
  @overload
159
174
  @classmethod
@@ -163,6 +178,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
163
178
  identifier_value: IdentifierValueType,
164
179
  statuses: ListOfDataStatuses = list(FULL_DATA_STATUSES),
165
180
  use_cache: bool = True,
181
+ expand: OptListOfExpandableFields = None,
166
182
  ) -> "ReadSingleParameter": ...
167
183
  @classmethod
168
184
  def new(
@@ -171,6 +187,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
171
187
  identifier_value: IdentifierValueType,
172
188
  statuses: ListOfDataStatuses = list(FULL_DATA_STATUSES),
173
189
  use_cache: bool = True,
190
+ expand: OptListOfExpandableFields = None,
174
191
  ) -> "ReadSingleParameter":
175
192
  return cls(
176
193
  identifier=UserProfileIdentifier(
@@ -179,6 +196,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
179
196
  ),
180
197
  statuses=statuses,
181
198
  use_cache=use_cache,
199
+ expand=expand,
182
200
  )
183
201
 
184
202
  def to_query_params(self) -> StrToAnyDict:
@@ -188,6 +206,7 @@ class ReadSingleParameter(BaseReadSingleParameter[UserProfileIdentifier]):
188
206
 
189
207
 
190
208
  class FullUpdateData(
209
+ AvatarMixin,
191
210
  BloodTypeMixin[OptBloodType],
192
211
  GenderMixin[OptGender],
193
212
  BirthDate[OptDate],
@@ -203,6 +222,7 @@ class FullUpdateData(
203
222
 
204
223
 
205
224
  class PartialUpdateData(
225
+ AvatarMixin,
206
226
  BloodTypeMixin[OptBloodType],
207
227
  GenderMixin[OptGender],
208
228
  BirthDate[OptDate],
@@ -225,6 +245,7 @@ class UpdateDataMixin(BaseModel, Generic[UpdateDataT]):
225
245
 
226
246
 
227
247
  class UpdateParameter(
248
+ Expand,
228
249
  UpdateDataMixin[UpdateDataT],
229
250
  IdentifierMixin[UserProfileIdentifier],
230
251
  Generic[UpdateDataT],
@@ -236,6 +257,7 @@ class UpdateParameter(
236
257
  identifier_type: Literal[IdentifierType.ID, IdentifierType.USER_ID],
237
258
  identifier_value: int,
238
259
  data: UpdateDataT,
260
+ expand: OptListOfExpandableFields = None,
239
261
  ) -> "UpdateParameter": ...
240
262
  @overload
241
263
  @classmethod
@@ -244,6 +266,7 @@ class UpdateParameter(
244
266
  identifier_type: Literal[IdentifierType.UUID],
245
267
  identifier_value: UUID,
246
268
  data: UpdateDataT,
269
+ expand: OptListOfExpandableFields = None,
247
270
  ) -> "UpdateParameter": ...
248
271
  @overload
249
272
  @classmethod
@@ -252,6 +275,7 @@ class UpdateParameter(
252
275
  identifier_type: Literal[IdentifierType.ID_CARD],
253
276
  identifier_value: str,
254
277
  data: UpdateDataT,
278
+ expand: OptListOfExpandableFields = None,
255
279
  ) -> "UpdateParameter": ...
256
280
  @overload
257
281
  @classmethod
@@ -260,6 +284,7 @@ class UpdateParameter(
260
284
  identifier_type: IdentifierType,
261
285
  identifier_value: IdentifierValueType,
262
286
  data: UpdateDataT,
287
+ expand: OptListOfExpandableFields = None,
263
288
  ) -> "UpdateParameter": ...
264
289
  @classmethod
265
290
  def new(
@@ -267,16 +292,19 @@ class UpdateParameter(
267
292
  identifier_type: IdentifierType,
268
293
  identifier_value: IdentifierValueType,
269
294
  data: UpdateDataT,
295
+ expand: OptListOfExpandableFields = None,
270
296
  ) -> "UpdateParameter":
271
297
  return cls(
272
298
  identifier=UserProfileIdentifier(
273
299
  type=identifier_type, value=identifier_value
274
300
  ),
275
301
  data=data,
302
+ expand=expand,
276
303
  )
277
304
 
278
305
 
279
306
  class StatusUpdateParameter(
307
+ Expand,
280
308
  BaseStatusUpdateParameter[UserProfileIdentifier],
281
309
  ):
282
310
  @overload
@@ -286,6 +314,7 @@ class StatusUpdateParameter(
286
314
  identifier_type: Literal[IdentifierType.ID, IdentifierType.USER_ID],
287
315
  identifier_value: int,
288
316
  type: ResourceOperationStatusUpdateType,
317
+ expand: OptListOfExpandableFields = None,
289
318
  ) -> "StatusUpdateParameter": ...
290
319
  @overload
291
320
  @classmethod
@@ -294,6 +323,7 @@ class StatusUpdateParameter(
294
323
  identifier_type: Literal[IdentifierType.UUID],
295
324
  identifier_value: UUID,
296
325
  type: ResourceOperationStatusUpdateType,
326
+ expand: OptListOfExpandableFields = None,
297
327
  ) -> "StatusUpdateParameter": ...
298
328
  @overload
299
329
  @classmethod
@@ -302,6 +332,7 @@ class StatusUpdateParameter(
302
332
  identifier_type: Literal[IdentifierType.ID_CARD],
303
333
  identifier_value: str,
304
334
  type: ResourceOperationStatusUpdateType,
335
+ expand: OptListOfExpandableFields = None,
305
336
  ) -> "StatusUpdateParameter": ...
306
337
  @overload
307
338
  @classmethod
@@ -310,6 +341,7 @@ class StatusUpdateParameter(
310
341
  identifier_type: IdentifierType,
311
342
  identifier_value: IdentifierValueType,
312
343
  type: ResourceOperationStatusUpdateType,
344
+ expand: OptListOfExpandableFields = None,
313
345
  ) -> "StatusUpdateParameter": ...
314
346
  @classmethod
315
347
  def new(
@@ -317,12 +349,14 @@ class StatusUpdateParameter(
317
349
  identifier_type: IdentifierType,
318
350
  identifier_value: IdentifierValueType,
319
351
  type: ResourceOperationStatusUpdateType,
352
+ expand: OptListOfExpandableFields = None,
320
353
  ) -> "StatusUpdateParameter":
321
354
  return cls(
322
355
  identifier=UserProfileIdentifier(
323
356
  type=identifier_type, value=identifier_value
324
357
  ),
325
358
  type=type,
359
+ expand=expand,
326
360
  )
327
361
 
328
362
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: maleo-identity
3
- Version: 0.1.24
3
+ Version: 0.1.27
4
4
  Summary: MaleoIdentity service package
5
5
  Author-email: Agra Bima Yuda <agra@nexmedis.com>
6
6
  License: Proprietary
@@ -19,23 +19,23 @@ maleo/identity/enums/patient.py,sha256=gonmheVM5S99Wtddha7uJI4FzVOl9V0l1-ov1a-Kc
19
19
  maleo/identity/enums/user.py,sha256=Vv_5fHov_cPxKCcaxVeNNJgZL_wa2uewtr7w4smiVVU,506
20
20
  maleo/identity/enums/user_medical_role.py,sha256=KvPDu66wIh_sqvx0dyW38aTlCt5e_kRDcJ05Rk0rOd4,636
21
21
  maleo/identity/enums/user_organization_role.py,sha256=bV07sZYttbJPfefkp7u9Bkc4V1e3xsyhtErtpkXb-Xg,641
22
- maleo/identity/enums/user_profile.py,sha256=xYf5FNso2vjORZDSgLqwT5kb3P_1GtMZsR3utoAEgT8,342
22
+ maleo/identity/enums/user_profile.py,sha256=WvlEnYqKxlImEgYARl-NvEkz3Zm-HLvHCbsXxoePjTI,671
23
23
  maleo/identity/enums/user_system_role.py,sha256=zINGAt5D1nZ95ddvLXrFZaO_2k15S5gc4S9jF8sZ72s,925
24
24
  maleo/identity/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- maleo/identity/mixins/api_key.py,sha256=T5N-YKdDRrCQNaouZ3-FygzryzGmv9pDINq7sA60fys,2369
25
+ maleo/identity/mixins/api_key.py,sha256=T-MupQfKe5ru_kO-AQ3JZ11aqK92lFOgsIUy2cJWoo8,2383
26
26
  maleo/identity/mixins/common.py,sha256=diWtUiPMI_ypHtDrmI5y8IArxCdomo9Gt6X69iFhyuw,905
27
27
  maleo/identity/mixins/organization.py,sha256=P_GW483KCK4_ds9Jm82RVXEszwGgSzq1PHQk0ykgghk,2556
28
28
  maleo/identity/mixins/organization_registration_code.py,sha256=t_OHVoJobjYyfOVwAw_I3nebIFgG-AodApmIhDCVYmM,4693
29
- maleo/identity/mixins/organization_relation.py,sha256=tkpJcQ5lhG5mwPa8ZJ9mYzYXaGKTFmVx34dsR7pG5PQ,2867
29
+ maleo/identity/mixins/organization_relation.py,sha256=Fz_-2d6kdX8olzj67AN2UYj_Dw741SqS6ZQSllnujL8,2881
30
30
  maleo/identity/mixins/patient.py,sha256=unDmyazC5tyIsoXtAjMyWjAOOoxgMXa2DYfg6vZbLGI,2193
31
31
  maleo/identity/mixins/user.py,sha256=ShTtmt5mTSrJwbffnFePP7IXC08j2q1BKsAmV32YEiM,3537
32
- maleo/identity/mixins/user_medical_role.py,sha256=hdvJtQA9A2xA6LlDhdHMECdETCPtG5gJvmVquzRcAm4,2407
33
- maleo/identity/mixins/user_organization_role.py,sha256=3K7eZxRjEYhRTVvGGKYM8WQHpW0mFQO2x-_qqEDjrPc,2498
34
- maleo/identity/mixins/user_profile.py,sha256=fxKCS5N7fGEgOLWPeNry25nKsXDUrI9TB2nNbWb6Iyw,3813
35
- maleo/identity/mixins/user_system_role.py,sha256=Vi39Au-IT4y7tQ-dfsnv9FFTqhY2rCny91ohPai552Y,2571
32
+ maleo/identity/mixins/user_medical_role.py,sha256=DHdh3-JMysspWUM2A7Yx-OFcUz-KxwGHvgLDQuRXv08,2421
33
+ maleo/identity/mixins/user_organization_role.py,sha256=rU4Ci0iVqG4QFVRZM8PmCTgvDg5PqS2Ea-DSENYgj6Y,2512
34
+ maleo/identity/mixins/user_profile.py,sha256=hha88X83ugGEPsXAdUw-0iQK11eGZyutMCQLkk3pywQ,4401
35
+ maleo/identity/mixins/user_system_role.py,sha256=7L0C-sFCMzjUZYk2ZJZ6FLXJwvMO66KaYWODW1oFXAE,2585
36
36
  maleo/identity/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
37
  maleo/identity/schemas/api_key.py,sha256=_JWrUwrRCqxTrcan-eKMegNVU1T46gERNcr8pNK_Y-U,5376
38
- maleo/identity/schemas/common.py,sha256=ijaLA6LQU8q0uw5qve0ksvuZMV6MKGv_CxbmofBiCh0,9046
38
+ maleo/identity/schemas/common.py,sha256=-ijdgmyz1xo8CYpKkh34iioZtIs-im5akHt1C54DzY0,9110
39
39
  maleo/identity/schemas/organization.py,sha256=0oVnuvB-E55AZ2h-PFoprY9wyyKi-xPLErXJW6yrBn8,9302
40
40
  maleo/identity/schemas/organization_registration_code.py,sha256=6LzKsIXt5DNQv1605dRsv2DmaonDLN36jgHyi9xxY-k,9192
41
41
  maleo/identity/schemas/organization_relation.py,sha256=9HGZypuhpK9egCHVDS1nh_lm5D0osxYM_4KmEEV8sHI,9487
@@ -43,7 +43,7 @@ maleo/identity/schemas/patient.py,sha256=qhycLtZfEDL8FWdT5GSe63so_9fdRXW_vAPNU0-
43
43
  maleo/identity/schemas/user.py,sha256=y2X_2QckxrO2qWPYbn5RIMsK4MYgJU1V3huKTX3C7ds,9390
44
44
  maleo/identity/schemas/user_medical_role.py,sha256=zZdsRmty2InIthAvEgrXDWu7uv7Ez5dQ0XX86-JSE4E,9303
45
45
  maleo/identity/schemas/user_organization_role.py,sha256=r_9zEjL7tmDzSdsflf80qez2DgbGNEoueHCmM9wWOZo,9475
46
- maleo/identity/schemas/user_profile.py,sha256=9EgQ7Gi1kFAvgUrCsJ3I4SzZTRNJCUrX1Hkyp1t6Bgo,10165
46
+ maleo/identity/schemas/user_profile.py,sha256=h_hwlHabHahGToio3YXIbquM-41y7qtT2GFxt8DR4YU,11167
47
47
  maleo/identity/schemas/user_system_role.py,sha256=89vucqAxQjjfe0CFd6Z76008de5JxnZb56Zi1GU-Y-A,10095
48
48
  maleo/identity/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
49
  maleo/identity/types/api_key.py,sha256=dJ4dnw9xYwedJVmSlQhGJrDFlY91T7-2EibP5FI_-rM,198
@@ -59,8 +59,8 @@ maleo/identity/types/user_system_role.py,sha256=9kNZ56HOMCdiT7fsT9uB2w0p8iQyfclY
59
59
  maleo/identity/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  maleo/identity/utils/organization.py,sha256=aEegzeoNLUptrScUB5kWrYlJj7dzTZeVXymltE5lWpE,874
61
61
  maleo/identity/utils/user.py,sha256=1pyfmAbXkAEOo6WM2KRA_kRnFi0O_A2ZUEqv01wY-cU,794
62
- maleo_identity-0.1.24.dist-info/licenses/LICENSE,sha256=aftGsecnk7TWVX-7KW94FqK4Syy6YSZ8PZEF7EcIp3M,2621
63
- maleo_identity-0.1.24.dist-info/METADATA,sha256=gsxFKe8h5zSZQ5UiwzW1NQ0yzNOmTusluJkHnaR-p7E,3584
64
- maleo_identity-0.1.24.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
- maleo_identity-0.1.24.dist-info/top_level.txt,sha256=3Tpd1siVsfYoeI9FEOJNYnffx_shzZ3wsPpTvz5bljc,6
66
- maleo_identity-0.1.24.dist-info/RECORD,,
62
+ maleo_identity-0.1.27.dist-info/licenses/LICENSE,sha256=aftGsecnk7TWVX-7KW94FqK4Syy6YSZ8PZEF7EcIp3M,2621
63
+ maleo_identity-0.1.27.dist-info/METADATA,sha256=Sw79f_sMcza3NRQ-Hd60mow7zoZpGJG4o41_ZxltTO0,3584
64
+ maleo_identity-0.1.27.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
65
+ maleo_identity-0.1.27.dist-info/top_level.txt,sha256=3Tpd1siVsfYoeI9FEOJNYnffx_shzZ3wsPpTvz5bljc,6
66
+ maleo_identity-0.1.27.dist-info/RECORD,,