workos 5.31.0__py3-none-any.whl → 5.31.2__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.31.0"
15
+ __version__ = "5.31.2"
16
16
 
17
17
  __author__ = "WorkOS"
18
18
 
workos/exceptions.py CHANGED
@@ -45,6 +45,24 @@ class AuthorizationException(BaseRequestException):
45
45
  pass
46
46
 
47
47
 
48
+ class EmailVerificationRequiredException(AuthorizationException):
49
+ """Raised when email verification is required before authentication.
50
+
51
+ This exception includes an email_verification_id field that can be used
52
+ to retrieve the email verification object or resend the verification email.
53
+ """
54
+
55
+ def __init__(
56
+ self,
57
+ response: httpx.Response,
58
+ response_json: Optional[Mapping[str, Any]],
59
+ ) -> None:
60
+ super().__init__(response, response_json)
61
+ self.email_verification_id = self.extract_from_json(
62
+ "email_verification_id", None
63
+ )
64
+
65
+
48
66
  class AuthenticationException(BaseRequestException):
49
67
  pass
50
68
 
workos/user_management.py CHANGED
@@ -739,9 +739,7 @@ class UserManagementModule(Protocol):
739
739
  order: Optional[PaginationOrder] = "desc",
740
740
  ) -> SyncOrAsync["SessionsListResource"]: ...
741
741
 
742
- def revoke_session(
743
- self, *, session_id: str
744
- ) -> SyncOrAsync[UserManagementSession]: ...
742
+ def revoke_session(self, *, session_id: str) -> SyncOrAsync[None]: ...
745
743
 
746
744
  def get_magic_auth(self, magic_auth_id: str) -> SyncOrAsync[MagicAuth]:
747
745
  """Get the details of a Magic Auth object.
@@ -1439,15 +1437,13 @@ class UserManagement(UserManagementModule):
1439
1437
  **ListPage[UserManagementSession](**response).model_dump(),
1440
1438
  )
1441
1439
 
1442
- def revoke_session(self, *, session_id: str) -> UserManagementSession:
1440
+ def revoke_session(self, *, session_id: str) -> None:
1443
1441
  json = {"session_id": session_id}
1444
1442
 
1445
- response = self._http_client.request(
1443
+ self._http_client.request(
1446
1444
  SESSIONS_REVOKE_PATH, method=REQUEST_METHOD_POST, json=json
1447
1445
  )
1448
1446
 
1449
- return UserManagementSession.model_validate(response)
1450
-
1451
1447
  def enroll_auth_factor(
1452
1448
  self,
1453
1449
  *,
@@ -2143,15 +2139,13 @@ class AsyncUserManagement(UserManagementModule):
2143
2139
  **ListPage[UserManagementSession](**response).model_dump(),
2144
2140
  )
2145
2141
 
2146
- async def revoke_session(self, *, session_id: str) -> UserManagementSession:
2142
+ async def revoke_session(self, *, session_id: str) -> None:
2147
2143
  json = {"session_id": session_id}
2148
2144
 
2149
- response = await self._http_client.request(
2145
+ await self._http_client.request(
2150
2146
  SESSIONS_REVOKE_PATH, method=REQUEST_METHOD_POST, json=json
2151
2147
  )
2152
2148
 
2153
- return UserManagementSession.model_validate(response)
2154
-
2155
2149
  async def enroll_auth_factor(
2156
2150
  self,
2157
2151
  *,
@@ -20,6 +20,7 @@ from workos.exceptions import (
20
20
  ServerException,
21
21
  AuthenticationException,
22
22
  AuthorizationException,
23
+ EmailVerificationRequiredException,
23
24
  NotFoundException,
24
25
  BadRequestException,
25
26
  )
@@ -99,6 +100,11 @@ class BaseHTTPClient(Generic[_HttpxClientT]):
99
100
  if status_code == 401:
100
101
  raise AuthenticationException(response, response_json)
101
102
  elif status_code == 403:
103
+ if (
104
+ response_json is not None
105
+ and response_json.get("code") == "email_verification_required"
106
+ ):
107
+ raise EmailVerificationRequiredException(response, response_json)
102
108
  raise AuthorizationException(response, response_json)
103
109
  elif status_code == 404:
104
110
  raise NotFoundException(response, response_json)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: workos
3
- Version: 5.31.0
3
+ Version: 5.31.2
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=sUrMcjQcQtdtxSlUlUuALqeDB8XbntQylllk9swC78M,406
1
+ workos/__about__.py,sha256=-HWB0OGuzIK0-LUXp7gcRtOCm0T1UTv1YlBlbBKYd2A,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
@@ -7,7 +7,7 @@ workos/audit_logs.py,sha256=bYoAoNO4FRSaT34UxiVkgTXCVH8givcS2YGhH_9O3NA,3983
7
7
  workos/client.py,sha256=hIm87iNtKfwQ93H5aRXnhTqUJIOzUEG1GX0jdLBLAYc,4345
8
8
  workos/directory_sync.py,sha256=6Z1gHz1LWNy56EtkXwNm6jhRRcvsJ7ASeDLy_Q1oKM0,14601
9
9
  workos/events.py,sha256=b4JIzMbd5LlVtpOMKVojC70RCHAgmLN3nJ62_2U0GwI,3892
10
- workos/exceptions.py,sha256=eoy-T4We98HKZn0UZu33fPzhm4DwafzwLeg3juhC6FE,1732
10
+ workos/exceptions.py,sha256=wYDlbMLVxrKQTF0M6ExFlxS5YEkvNZ4BeWLryRxcAFs,2335
11
11
  workos/fga.py,sha256=qjZrdkXKwJDLVTMMrOADxyXRDkswto4kGIdtTjtS3hw,21008
12
12
  workos/mfa.py,sha256=J8eOr4ZEmK0TPFKD7pabSalgCFCyg3XJY1stu28_8Vw,6862
13
13
  workos/organization_domains.py,sha256=um-dm54SIs2Kd2FxqxVjIlynlenAG9NamQmNVUGOQ0k,5464
@@ -17,7 +17,7 @@ workos/portal.py,sha256=lzf3fnOor4AyVdHCHMuJzVSpAC9LWWdC5sZIRtCsb0c,2443
17
17
  workos/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
18
18
  workos/session.py,sha256=Fh9Y7fyjoX_cK2TayhNzpL725pwrNg-QClsgEfuMZsU,12412
19
19
  workos/sso.py,sha256=ZBC3y-IRmxG0jPd0BOj7s7XQkXJoTLUg1fx-h3Gfy4g,13541
20
- workos/user_management.py,sha256=vrqOJO7U8abvnDq36BE7bvqLk9e6diGHeKBH2RYY534,82176
20
+ workos/user_management.py,sha256=n2xaPiv3t38ckWApNZyNKXbv2EQorxgoPhljd-5ekys,81963
21
21
  workos/vault.py,sha256=SJXr3nJ03qJFuf30FjevMD6LLlDNX3MGaKlYGgICRRE,15657
22
22
  workos/webhooks.py,sha256=CuwBxh6va9VZFVSXOknveGt6CCGDF3em07a-J12DbXI,4790
23
23
  workos/widgets.py,sha256=bfbR0hQOHZabbgGL2ekD5sY1sjiUoWBTdrBd_a6WmBc,1721
@@ -123,13 +123,13 @@ workos/typing/sync_or_async.py,sha256=O-a-bWqxN5A-UkSC3pOvPgDCGUY5gMD-NNny4HdISe
123
123
  workos/typing/untyped_literal.py,sha256=wf48_6kZJ-AN3-V2gLC_y5k2tnUvgGnhn89HsfOKNTM,1463
124
124
  workos/typing/webhooks.py,sha256=8GhUnrlGrgQbknh32tVtHxeR8FsXsJesW94CtZiB-_4,534
125
125
  workos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
- workos/utils/_base_http_client.py,sha256=KqRHUaDJUfXGxhu6UHLfZVkIBikcvrUZYhm9GBSByB4,7410
126
+ workos/utils/_base_http_client.py,sha256=tX2RAk2Mc2oHPTpzIft4-Tss8-vOJZUjmHcQ9cjpwOs,7705
127
127
  workos/utils/crypto_provider.py,sha256=QeQSR4t9xLlb90kEfl8onVUsf1yCkYq0EjFTxK0mUlk,1182
128
128
  workos/utils/http_client.py,sha256=TM5yMFFExmAE8D2Z43-5O301tRbnylLG0aXO0isGorE,6197
129
129
  workos/utils/pagination_order.py,sha256=_-et1DDJLG0czarTU7op4W6RA0V1f85GNsUgtyRU55Q,70
130
130
  workos/utils/request_helper.py,sha256=NaO16qPPbSNnCeE0fiNKYb8gM-dK_okYVJbLGrEGXz8,793
131
- workos-5.31.0.dist-info/LICENSE,sha256=mU--WL1JzelH2tXpKVoOlpud4cpqKSRTtdArCvYZmb4,1063
132
- workos-5.31.0.dist-info/METADATA,sha256=YUFDYHxuihkBeFTZ3EbNagDQuyDcI431mVt8mNGFtc0,4187
133
- workos-5.31.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
134
- workos-5.31.0.dist-info/top_level.txt,sha256=ZFskIfue1Tw-JwjyIXRvdsAl9i0DX9VbqmgICXV84Sk,7
135
- workos-5.31.0.dist-info/RECORD,,
131
+ workos-5.31.2.dist-info/LICENSE,sha256=mU--WL1JzelH2tXpKVoOlpud4cpqKSRTtdArCvYZmb4,1063
132
+ workos-5.31.2.dist-info/METADATA,sha256=yyDH3OsYVz7dO51lDJlHT7cbTnVFBIwCZyCesROGDJI,4187
133
+ workos-5.31.2.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
134
+ workos-5.31.2.dist-info/top_level.txt,sha256=ZFskIfue1Tw-JwjyIXRvdsAl9i0DX9VbqmgICXV84Sk,7
135
+ workos-5.31.2.dist-info/RECORD,,