workos 5.26.0__py3-none-any.whl → 5.27.0__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.
workos/__about__.py CHANGED
@@ -12,7 +12,7 @@ __package_name__ = "workos"
12
12
 
13
13
  __package_url__ = "https://github.com/workos-inc/workos-python"
14
14
 
15
- __version__ = "5.26.0"
15
+ __version__ = "5.27.0"
16
16
 
17
17
  __author__ = "WorkOS"
18
18
 
workos/session.py CHANGED
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
  from typing import TYPE_CHECKING, List, Protocol
3
3
 
4
+ from functools import lru_cache
4
5
  import json
5
6
  from typing import Any, Dict, Optional, Union, cast
6
7
  import jwt
@@ -21,6 +22,11 @@ if TYPE_CHECKING:
21
22
  from workos.user_management import AsyncUserManagement, UserManagement
22
23
 
23
24
 
25
+ @lru_cache(maxsize=None)
26
+ def _get_jwks_client(jwks_url: str) -> PyJWKClient:
27
+ return PyJWKClient(jwks_url)
28
+
29
+
24
30
  class SessionModule(Protocol):
25
31
  user_management: "UserManagementModule"
26
32
  client_id: str
@@ -46,7 +52,7 @@ class SessionModule(Protocol):
46
52
  self.session_data = session_data
47
53
  self.cookie_password = cookie_password
48
54
 
49
- self.jwks = PyJWKClient(self.user_management.get_jwks_url())
55
+ self.jwks = _get_jwks_client(self.user_management.get_jwks_url())
50
56
 
51
57
  # Algorithms are hardcoded for security reasons. See https://pyjwt.readthedocs.io/en/stable/algorithms.html#specifying-an-algorithm
52
58
  self.jwk_algorithms = ["RS256"]
@@ -164,7 +170,7 @@ class Session(SessionModule):
164
170
  self.session_data = session_data
165
171
  self.cookie_password = cookie_password
166
172
 
167
- self.jwks = PyJWKClient(self.user_management.get_jwks_url())
173
+ self.jwks = _get_jwks_client(self.user_management.get_jwks_url())
168
174
 
169
175
  # Algorithms are hardcoded for security reasons. See https://pyjwt.readthedocs.io/en/stable/algorithms.html#specifying-an-algorithm
170
176
  self.jwk_algorithms = ["RS256"]
@@ -254,7 +260,7 @@ class AsyncSession(SessionModule):
254
260
  self.session_data = session_data
255
261
  self.cookie_password = cookie_password
256
262
 
257
- self.jwks = PyJWKClient(self.user_management.get_jwks_url())
263
+ self.jwks = _get_jwks_client(self.user_management.get_jwks_url())
258
264
 
259
265
  # Algorithms are hardcoded for security reasons. See https://pyjwt.readthedocs.io/en/stable/algorithms.html#specifying-an-algorithm
260
266
  self.jwk_algorithms = ["RS256"]
@@ -163,10 +163,18 @@ class EmailVerificationCreatedEvent(EventModel[EmailVerificationCommon]):
163
163
  event: Literal["email_verification.created"]
164
164
 
165
165
 
166
+ class InvitationAcceptedEvent(EventModel[InvitationCommon]):
167
+ event: Literal["invitation.accepted"]
168
+
169
+
166
170
  class InvitationCreatedEvent(EventModel[InvitationCommon]):
167
171
  event: Literal["invitation.created"]
168
172
 
169
173
 
174
+ class InvitationRevokedEvent(EventModel[InvitationCommon]):
175
+ event: Literal["invitation.revoked"]
176
+
177
+
170
178
  class MagicAuthCreatedEvent(EventModel[MagicAuthCommon]):
171
179
  event: Literal["magic_auth.created"]
172
180
 
@@ -279,7 +287,9 @@ Event = Annotated[
279
287
  DirectoryUserAddedToGroupEvent,
280
288
  DirectoryUserRemovedFromGroupEvent,
281
289
  EmailVerificationCreatedEvent,
290
+ InvitationAcceptedEvent,
282
291
  InvitationCreatedEvent,
292
+ InvitationRevokedEvent,
283
293
  MagicAuthCreatedEvent,
284
294
  OrganizationCreatedEvent,
285
295
  OrganizationDeletedEvent,
@@ -29,7 +29,9 @@ EventType = Literal[
29
29
  "dsync.group.user_added",
30
30
  "dsync.group.user_removed",
31
31
  "email_verification.created",
32
+ "invitation.accepted",
32
33
  "invitation.created",
34
+ "invitation.revoked",
33
35
  "magic_auth.created",
34
36
  "organization.created",
35
37
  "organization.deleted",
@@ -167,10 +167,18 @@ class EmailVerificationCreatedWebhook(WebhookModel[EmailVerificationCommon]):
167
167
  event: Literal["email_verification.created"]
168
168
 
169
169
 
170
+ class InvitationAcceptedWebhook(WebhookModel[InvitationCommon]):
171
+ event: Literal["invitation.accepted"]
172
+
173
+
170
174
  class InvitationCreatedWebhook(WebhookModel[InvitationCommon]):
171
175
  event: Literal["invitation.created"]
172
176
 
173
177
 
178
+ class InvitationRevokedWebhook(WebhookModel[InvitationCommon]):
179
+ event: Literal["invitation.revoked"]
180
+
181
+
174
182
  class MagicAuthCreatedWebhook(WebhookModel[MagicAuthCommon]):
175
183
  event: Literal["magic_auth.created"]
176
184
 
@@ -271,7 +279,9 @@ Webhook = Annotated[
271
279
  DirectoryUserAddedToGroupWebhook,
272
280
  DirectoryUserRemovedFromGroupWebhook,
273
281
  EmailVerificationCreatedWebhook,
282
+ InvitationAcceptedWebhook,
274
283
  InvitationCreatedWebhook,
284
+ InvitationRevokedWebhook,
275
285
  MagicAuthCreatedWebhook,
276
286
  OrganizationCreatedWebhook,
277
287
  OrganizationDeletedWebhook,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: workos
3
- Version: 5.26.0
3
+ Version: 5.27.0
4
4
  Summary: WorkOS Python Client
5
5
  Home-page: https://github.com/workos-inc/workos-python
6
6
  Author: WorkOS
@@ -1,4 +1,4 @@
1
- workos/__about__.py,sha256=XjdHlLqPEJ0a5evP3CCUorp0ckGip4qzzY2V8gM6xXg,406
1
+ workos/__about__.py,sha256=44_g5uJBX2ZmRGExzrm8kphS58DJWlXIfHZS-jIhELw,406
2
2
  workos/__init__.py,sha256=hOdbO_MJCvpLx8EbRjQg-fvFAB-glJmrmxUZK8kWG0k,167
3
3
  workos/_base_client.py,sha256=YWLXBpd0YeID3WKYZkKa4l9ZuB9e6HgdLmPKZIzXsME,3599
4
4
  workos/_client_configuration.py,sha256=g3eXhtrEMN6CW0hZ5uHb2PmLurXjyBkWZeQYMPeJD6s,222
@@ -15,7 +15,7 @@ workos/organizations.py,sha256=ugPRhwN8cN2O6qOCf7wj8Wus-oeRKXlNe2642PSl_n4,12266
15
15
  workos/passwordless.py,sha256=NGXDoxomBkrIml8-VHXH1HvCFMqotQ-YhRobUQXpVZs,3203
16
16
  workos/portal.py,sha256=lzf3fnOor4AyVdHCHMuJzVSpAC9LWWdC5sZIRtCsb0c,2443
17
17
  workos/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
- workos/session.py,sha256=CVada-nKRFv9m2-mcghR5VBOguGU76iDCDgQlksOOrQ,11912
18
+ workos/session.py,sha256=EXurDn7wTRsciRSN_nN98tRD9hhw28eIMLrMNxWhyy0,12071
19
19
  workos/sso.py,sha256=ZBC3y-IRmxG0jPd0BOj7s7XQkXJoTLUg1fx-h3Gfy4g,13541
20
20
  workos/user_management.py,sha256=qy21HxYVO40xo7TvCGVxvGWdYIFHZTVnUJTpCQIN2ko,77113
21
21
  workos/vault.py,sha256=SJXr3nJ03qJFuf30FjevMD6LLlDNX3MGaKlYGgICRRE,15657
@@ -47,9 +47,9 @@ workos/types/events/directory_group_with_previous_attributes.py,sha256=13VLNhdJZ
47
47
  workos/types/events/directory_payload.py,sha256=tRo3f9g8VoYertSUPAR25iGDyGLr2Dtb2mTkl73PAeA,503
48
48
  workos/types/events/directory_payload_with_legacy_fields.py,sha256=jk9nLmRqgllVkBG4EU3uTgcDOhCNptHgCh93U7aBAYE,1005
49
49
  workos/types/events/directory_user_with_previous_attributes.py,sha256=PhnO3WakBxAvnlOGf0UB0bvoppUYlwLyU-g9X_pPdko,244
50
- workos/types/events/event.py,sha256=4E-71v38J1Udt0qFz9k17V6HmNj9Lgz-mmS-524ysIs,9817
50
+ workos/types/events/event.py,sha256=5EOOtI7z6Gti5LlkVrHFojp1MWxJc6JL0fAvmp6DQ-k,10090
51
51
  workos/types/events/event_model.py,sha256=TuCRgjgTWnTvwL3NTR9FBGuF7WO34OhsbtMGKss5QKA,3722
52
- workos/types/events/event_type.py,sha256=NIVHMahETiKeFJfZGi-ptHQH7czmRY4tChnuMU0OxWw,1690
52
+ workos/types/events/event_type.py,sha256=6pIPTHAwcjpvihWCK4cgNeSG_pSTqD4sZrBczu4EP5A,1743
53
53
  workos/types/events/list_filters.py,sha256=P04zmRynx9VPqNX_MBXA-3KA6flPZJogtIUqTI7w9Eg,305
54
54
  workos/types/events/organization_domain_verification_failed_payload.py,sha256=b4wX8HVbL9Nx6fCjOXkZg9eLc-Bv6YqAjMap1f7UvFc,470
55
55
  workos/types/events/previous_attributes.py,sha256=DxolwLwzcnG8r_W6rh5BT29iDfSVsIELvRYJ0NCrNn0,72
@@ -108,7 +108,7 @@ workos/types/vault/__init__.py,sha256=krBuIl8luysrtDf9-b8KTkXOHDOaSsOR-Aao6Wlil0
108
108
  workos/types/vault/key.py,sha256=x30XBplSj9AviDDAB8MdpcULbZvvo2sUzi8RCmZQKxU,453
109
109
  workos/types/vault/object.py,sha256=-rk4KovS3eT8T8L3JltYUS0cd2Rg1JKcAX9SOaZO3D8,664
110
110
  workos/types/webhooks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
- workos/types/webhooks/webhook.py,sha256=v0Z7Z1eMnjCMR8iWm2KNECv-8nwPdTB8gTZCVfFP0O0,9510
111
+ workos/types/webhooks/webhook.py,sha256=X8fhXpUGlbHmQnOZqWh5he0XOH1aSbd5yIHT5GM9AG8,9795
112
112
  workos/types/webhooks/webhook_model.py,sha256=v7Hgtzt0nW_5RaYoB_QGVfElhdjySuG3F1BFjoid36w,404
113
113
  workos/types/webhooks/webhook_payload.py,sha256=GXt31KtyBM-ji5K5p4dBnu46Gh8adQWTq0ye5USB_6g,68
114
114
  workos/types/widgets/__init__.py,sha256=z2Tdlj_bJsRZeJRh4SOFX58PvJdf0LjKnYhrQX1fpME,65
@@ -125,8 +125,8 @@ workos/utils/crypto_provider.py,sha256=QeQSR4t9xLlb90kEfl8onVUsf1yCkYq0EjFTxK0mU
125
125
  workos/utils/http_client.py,sha256=TM5yMFFExmAE8D2Z43-5O301tRbnylLG0aXO0isGorE,6197
126
126
  workos/utils/pagination_order.py,sha256=_-et1DDJLG0czarTU7op4W6RA0V1f85GNsUgtyRU55Q,70
127
127
  workos/utils/request_helper.py,sha256=NaO16qPPbSNnCeE0fiNKYb8gM-dK_okYVJbLGrEGXz8,793
128
- workos-5.26.0.dist-info/LICENSE,sha256=mU--WL1JzelH2tXpKVoOlpud4cpqKSRTtdArCvYZmb4,1063
129
- workos-5.26.0.dist-info/METADATA,sha256=MohK6HHQVDsilcCLtEwsSRF_ufiHMGCe1puhiVakL60,4187
130
- workos-5.26.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
131
- workos-5.26.0.dist-info/top_level.txt,sha256=ZFskIfue1Tw-JwjyIXRvdsAl9i0DX9VbqmgICXV84Sk,7
132
- workos-5.26.0.dist-info/RECORD,,
128
+ workos-5.27.0.dist-info/LICENSE,sha256=mU--WL1JzelH2tXpKVoOlpud4cpqKSRTtdArCvYZmb4,1063
129
+ workos-5.27.0.dist-info/METADATA,sha256=j1sWLVnRxXHdrpIO8uysMsf3logqWc3JUVkP8OHKwjI,4187
130
+ workos-5.27.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
131
+ workos-5.27.0.dist-info/top_level.txt,sha256=ZFskIfue1Tw-JwjyIXRvdsAl9i0DX9VbqmgICXV84Sk,7
132
+ workos-5.27.0.dist-info/RECORD,,