@@ -15,6 +15,9 @@ Here's a short example using multiple types:
15
15
16
16
.. code-block :: python
17
17
18
+ from typing import Optional
19
+ from uuid import UUID
20
+ from datetime import datetime
18
21
from sqlalchemy.orm import Mapped, mapped_column
19
22
from advanced_alchemy.base import DefaultBase
20
23
from advanced_alchemy.types import (
@@ -23,6 +26,7 @@ Here's a short example using multiple types:
23
26
GUID ,
24
27
JsonB,
25
28
StoredObject,
29
+ FileObject,
26
30
)
27
31
28
32
class User (DefaultBase ):
@@ -34,8 +38,8 @@ Here's a short example using multiple types:
34
38
avatar: Mapped[Optional[FileObject]] = mapped_column(StoredObject(backend = " local_store" ))
35
39
36
40
37
- DateTimeUTC
38
- -----------
41
+ DateTime UTC
42
+ ------------
39
43
40
44
- Ensures all datetime values are stored in UTC
41
45
- Requires timezone information for input values
@@ -44,6 +48,7 @@ DateTimeUTC
44
48
45
49
.. code-block :: python
46
50
51
+ from datetime import datetime
47
52
from sqlalchemy.orm import Mapped, mapped_column
48
53
from advanced_alchemy.base import DefaultBase
49
54
from advanced_alchemy.types import DateTimeUTC
@@ -114,8 +119,8 @@ A platform-independent GUID/UUID type that adapts to different database backends
114
119
__tablename__ = " my_model"
115
120
id : Mapped[UUID ] = mapped_column(GUID , primary_key = True )
116
121
117
- BigIntIdentity
118
- --------------
122
+ BigInt Identity
123
+ ---------------
119
124
120
125
A BigInteger type that automatically falls back to Integer for SQLite:
121
126
@@ -161,7 +166,7 @@ A type for storing password hashes with configurable backends. Currently suppor
161
166
from sqlalchemy.orm import Mapped, mapped_column
162
167
from advanced_alchemy.base import DefaultBase
163
168
from advanced_alchemy.types import PasswordHash
164
- from advanced_alchemy.types.password_hash.passlib import PasslibHasher
169
+ from advanced_alchemy.types.password_hash.pwdlib import PwdlibHasher
165
170
from pwdlib.hashers.argon2 import Argon2Hasher as PwdlibArgon2Hasher
166
171
167
172
class MyModel (DefaultBase ):
@@ -180,9 +185,10 @@ Basic Usage
180
185
181
186
.. code-block :: python
182
187
183
- from sqlalchemy.orm import Mapped, mapped_column
188
+ from typing import Optional
184
189
from advanced_alchemy.base import UUIDBase
185
- from advanced_alchemy.types.file_object import FileObject, StoredObject
190
+ from advanced_alchemy.types.file_object import FileObject, FileObjectList, StoredObject
191
+ from sqlalchemy.orm import Mapped, mapped_column
186
192
187
193
class Document (UUIDBase ):
188
194
__tablename__ = " documents"
@@ -216,15 +222,15 @@ The FSSpec backend uses the `fsspec <https://filesystem-spec.readthedocs.io/>`_
216
222
from advanced_alchemy.types.file_object import storages
217
223
218
224
# Local filesystem
219
- storages.register (FSSpecBackend(fs = fsspec.filesystem(" file" ), key = " local" ))
225
+ storages.register_backend (FSSpecBackend(fs = fsspec.filesystem(" file" ), key = " local" ))
220
226
# S3 storage
221
227
fs = fsspec.S3FileSystem(
222
228
anon = False ,
223
229
key = " your-access-key" ,
224
230
secret = " your-secret-key" ,
225
231
endpoint_url = " https://your-s3-endpoint" ,
226
232
)
227
- storages.register (FSSpecBackend(fs = fs, key = " s3" , prefix = " your-bucket" ))
233
+ storages.register_backend (FSSpecBackend(fs = fs, key = " s3" , prefix = " your-bucket" ))
228
234
229
235
Obstore Backend
230
236
^^^^^^^^^^^^^^^
@@ -237,13 +243,13 @@ The Obstore backend provides a simple interface for object storage:
237
243
from advanced_alchemy.types.file_object import storages
238
244
239
245
# Local storage
240
- storages.register (ObstoreBackend(
246
+ storages.register_backend (ObstoreBackend(
241
247
key = " local" ,
242
248
fs = " file:///path/to/storage" ,
243
249
))
244
250
245
251
# S3 storage
246
- storages.register (ObstoreBackend(
252
+ storages.register_backend (ObstoreBackend(
247
253
key = " s3" ,
248
254
fs = " s3://your-bucket/" ,
249
255
aws_access_key_id = " your-access-key" ,
0 commit comments