1- from typing import Generic , Literal , TypeVar , cast , Any , Self , Annotated , Union
2- from uuid import UUID
1+ import dataclasses
32import datetime
3+ from typing import (
4+ TYPE_CHECKING ,
5+ Annotated ,
6+ Any ,
7+ Generic ,
8+ Literal ,
9+ Self ,
10+ TypeVar ,
11+ Union ,
12+ cast ,
13+ )
14+ from uuid import UUID
415
516from pydantic import (
617 AliasChoices ,
718 Field ,
19+ ModelWrapValidatorHandler ,
820 TypeAdapter ,
21+ WrapValidator ,
922 field_validator ,
10- RootModel ,
11- PrivateAttr ,
1223 model_validator ,
13- ValidationError ,
14- ModelWrapValidatorHandler ,
15- WrapValidator ,
16- AfterValidator ,
1724)
1825from pydantic_core .core_schema import (
1926 FieldValidationInfo ,
2027 ValidationInfo ,
2128 ValidatorFunctionWrapHandler ,
2229)
30+ from src .vaultwarden .models .enum import KdfType
2331
2432from vaultwarden .clients .bitwarden import BitwardenAPIClient
2533from vaultwarden .models .enum import CipherType , OrganizationUserType
2634from vaultwarden .models .exception_models import BitwardenError
2735from vaultwarden .models .permissive_model import PermissiveBaseModel
2836from vaultwarden .utils .crypto import decrypt , encrypt
2937
30- from src .vaultwarden .models .enum import KdfType
38+ if TYPE_CHECKING :
39+ import vaultwarden .clients .bitwarden
3140
3241# Pydantic models for Bitwarden data structures
3342
@@ -56,57 +65,56 @@ def api_client(self) -> BitwardenAPIClient:
5665 return self .bitwarden_client
5766
5867
59- def decodeBytes (
68+ def decode_bytes (
6069 value : Any , handler : ValidatorFunctionWrapHandler , info : ValidationInfo
6170) -> str :
6271 for key in info .context ["cctx" ][::- 1 ]:
6372 try :
6473 return decrypt (handler (value ), key )
65- except Exception as e :
74+ except Exception :
6675 continue
67- raise e
6876
6977
70- def decodeString (
78+ def decode_string (
7179 value : Any , handler : ValidatorFunctionWrapHandler , info : ValidationInfo
7280) -> str :
73- return decodeBytes (value , handler , info = info ).decode ("utf-8" )
81+ return decode_bytes (value , handler , info = info ).decode ("utf-8" )
7482
7583
7684class UriMatch (BitwardenBaseModel ):
7785 class Config :
7886 extra = "forbid"
7987
8088 match : int | None = None
81- uri : Annotated [str , WrapValidator (decodeString )] | None = None
82- uriChecksum : Annotated [str , WrapValidator (decodeString )] | None = None
89+ uri : Annotated [str , WrapValidator (decode_string )] | None = None
90+ uriChecksum : Annotated [str , WrapValidator (decode_string )] | None = None
8391 response : str | None = None
8492
8593
8694class XField (BitwardenBaseModel ):
8795 class Config :
8896 extra = "forbid"
8997
90- name : Annotated [str , WrapValidator (decodeString )] | None = None
91- response : Annotated [str , WrapValidator (decodeString )] | None = None
98+ name : Annotated [str , WrapValidator (decode_string )] | None = None
99+ response : Annotated [str , WrapValidator (decode_string )] | None = None
92100 type : int
93- value : Annotated [str , WrapValidator (decodeString )] | None = None
101+ value : Annotated [str , WrapValidator (decode_string )] | None = None
94102 linkedId : str | None = None
95103
96104
97105class CipherLogin (BitwardenBaseModel ):
98106 class Config :
99107 extra = "forbid"
100108
101- name : Annotated [str , WrapValidator (decodeString )] | None = None
109+ name : Annotated [str , WrapValidator (decode_string )] | None = None
102110 autofillOnPageLoad : bool | None = None
103- password : Annotated [str , WrapValidator (decodeString )] | None = None
111+ password : Annotated [str , WrapValidator (decode_string )] | None = None
104112 passwordRevisionDate : datetime .datetime | None = None
105113 totp : str | None = None
106- uri : Annotated [str , WrapValidator (decodeString )] | None = None
114+ uri : Annotated [str , WrapValidator (decode_string )] | None = None
107115 uris : list [UriMatch ] | None = None
108- username : Annotated [str , WrapValidator (decodeString )] | None = None
109- notes : Annotated [str , WrapValidator (decodeString )] | None = None
116+ username : Annotated [str , WrapValidator (decode_string )] | None = None
117+ notes : Annotated [str , WrapValidator (decode_string )] | None = None
110118
111119
112120class PasswordChange (BitwardenBaseModel ):
@@ -117,24 +125,24 @@ class Config:
117125 password : str
118126
119127
120- class fido2Credential (BitwardenBaseModel ):
128+ class Fido2Credential (BitwardenBaseModel ):
121129 class Config :
122130 extra = "forbid"
123131
124- counter : Annotated [str , WrapValidator (decodeString )] | None = None
132+ counter : Annotated [str , WrapValidator (decode_string )] | None = None
125133 creationDate : datetime .datetime | None = None
126- credentialId : Annotated [str , WrapValidator (decodeString )] | None = None
127- discoverable : Annotated [str , WrapValidator (decodeString )] | None = None
128- keyAlgorithm : Annotated [str , WrapValidator (decodeString )] | None = None
129- keyCurve : Annotated [str , WrapValidator (decodeString )] | None = None
130- keyType : Annotated [str , WrapValidator (decodeString )] | None = None
131- keyValue : Annotated [str , WrapValidator (decodeString )] | None = None
134+ credentialId : Annotated [str , WrapValidator (decode_string )] | None = None
135+ discoverable : Annotated [str , WrapValidator (decode_string )] | None = None
136+ keyAlgorithm : Annotated [str , WrapValidator (decode_string )] | None = None
137+ keyCurve : Annotated [str , WrapValidator (decode_string )] | None = None
138+ keyType : Annotated [str , WrapValidator (decode_string )] | None = None
139+ keyValue : Annotated [str , WrapValidator (decode_string )] | None = None
132140 response : str | None = None
133- rpId : Annotated [str , WrapValidator (decodeString )] | None = None
134- rpName : Annotated [str , WrapValidator (decodeString )] | None = None
135- userDisplayName : Annotated [str , WrapValidator (decodeString )] | None = None
136- userHandle : Annotated [str , WrapValidator (decodeString )] | None = None
137- userName : Annotated [str , WrapValidator (decodeString )] | None = None
141+ rpId : Annotated [str , WrapValidator (decode_string )] | None = None
142+ rpName : Annotated [str , WrapValidator (decode_string )] | None = None
143+ userDisplayName : Annotated [str , WrapValidator (decode_string )] | None = None
144+ userHandle : Annotated [str , WrapValidator (decode_string )] | None = None
145+ userName : Annotated [str , WrapValidator (decode_string )] | None = None
138146
139147
140148class LoginData (CipherLogin ):
@@ -144,7 +152,7 @@ class Config:
144152 fields : list [XField ] | None = None
145153 passwordHistory : list [PasswordChange ] | None = None
146154 response : str | None = None
147- fido2Credentials : list [fido2Credential ] | None = None
155+ fido2Credentials : list [Fido2Credential ] | None = None
148156
149157
150158class SecureNoteData (CipherLogin ):
@@ -161,19 +169,19 @@ class SecureNoteProperty(BitwardenBaseModel):
161169 class Config :
162170 extra = "forbid"
163171
164- name : Annotated [str , WrapValidator (decodeString )] | None = None
165- notes : Annotated [str , WrapValidator (decodeString )] | None = None
172+ name : Annotated [str , WrapValidator (decode_string )] | None = None
173+ notes : Annotated [str , WrapValidator (decode_string )] | None = None
166174 fields : list [XField ] | None = None
167175 passwordHistory : list [PasswordChange ] | None = None
168- response : Annotated [str , WrapValidator (decodeString )] | None = None
176+ response : Annotated [str , WrapValidator (decode_string )] | None = None
169177 type : int
170178
171179
172180class Attachment (BitwardenBaseModel ):
173181 class Config :
174182 extra = "forbid"
175183
176- fileName : Annotated [str , WrapValidator (decodeString )] | None = None
184+ fileName : Annotated [str , WrapValidator (decode_string )] | None = None
177185 id : str
178186 key : str | None = (
179187 None # Annotated[str, WrapValidator(decodeBytes)]|None = None
@@ -191,7 +199,7 @@ class Config:
191199 Id : UUID | None = None
192200 OrganizationId : UUID | None = Field (None , validate_default = True )
193201 Type : CipherType
194- Name : Annotated [str , WrapValidator (decodeString )]
202+ Name : Annotated [str , WrapValidator (decode_string )]
195203 CollectionIds : list [UUID ]
196204 key : str | None = None
197205
@@ -200,7 +208,7 @@ class Config:
200208 deletedDate : datetime .datetime | None = None
201209 fields : list [XField ] | None = None
202210
203- notes : Annotated [str , WrapValidator (decodeString )] | None = None
211+ notes : Annotated [str , WrapValidator (decode_string )] | None = None
204212 reprompt : int
205213 revisionDate : str
206214 sshKey : str | None
@@ -835,9 +843,6 @@ def get_organization(
835843 )
836844
837845
838- import dataclasses
839-
840-
841846@dataclasses .dataclass
842847class Kdf :
843848 Kdf : KdfType
@@ -846,7 +851,7 @@ class Kdf:
846851 KdfParallelism : int | None = None
847852
848853 @classmethod
849- def from_ConnectToken (
854+ def from_connect_token (
850855 cls , token : "vaultwarden.clients.bitwarden.ConnectToken"
851856 ):
852857 return cls (
0 commit comments