FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
async-sqlmodel/async_sqlmodel/main.py at main · 2jun0/async-sqlmodel · GitHub
2jun0
/
async-sqlmodel
Public
Notifications
You must be signed in to change notification settings
Fork
2
Star
13
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
async-sqlmodel
/
async_sqlmodel
/
main.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
67 lines (52 loc) · 2.26 KB
Breadcrumbs
async-sqlmodel
/
async_sqlmodel
/
main.py
Copy path
File metadata and controls
67 lines (52 loc) · 2.26 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from
typing
import
Any
,
ClassVar
,
Coroutine
,
Dict
,
Tuple
,
Type
from
sqlalchemy
.
util
.
concurrency
import
greenlet_spawn
from
sqlmodel
import
SQLModel
from
sqlmodel
.
_compat
import
Representation
,
get_annotations
from
sqlmodel
.
main
import
SQLModelMetaclass
class
AwaitableFieldInfo
(
Representation
):
def
__init__
(
self
,
*
,
field
:
str
):
self
.
field
=
field
def
AwaitableField
(
*
,
field
:
str
)
->
Any
:
return
AwaitableFieldInfo
(
field
=
field
)
class
AsyncSQLModelMetaclass
(
SQLModelMetaclass
):
__async_sqlmodel_awaitable_fields__
:
Dict
[
str
,
AwaitableFieldInfo
]
def
__new__
(
cls
,
name
:
str
,
bases
:
Tuple
[
Type
[
Any
], ...],
class_dict
:
Dict
[
str
,
Any
],
**
kwargs
:
Any
)
->
Any
:
awaitable_fields
:
Dict
[
str
,
AwaitableFieldInfo
]
=
{}
dict_for_sqlmodel
=
{}
original_annotations
=
get_annotations
(
class_dict
)
sqlmodel_annotations
=
{}
awaitable_fields_annotations
=
{}
for
k
,
v
in
class_dict
.
items
():
if
isinstance
(
v
,
AwaitableFieldInfo
):
awaitable_fields
[
k
]
=
v
else
:
dict_for_sqlmodel
[
k
]
=
v
for
k
,
v
in
original_annotations
.
items
():
if
k
in
awaitable_fields
:
awaitable_fields_annotations
[
k
]
=
v
else
:
sqlmodel_annotations
[
k
]
=
v
dict_used
=
{
**
dict_for_sqlmodel
,
"__async_sqlmodel_awaitable_fields__"
:
awaitable_fields
,
"__annotations__"
:
sqlmodel_annotations
,
}
return
super
().
__new__
(
cls
,
name
,
bases
,
dict_used
,
**
kwargs
)
def
__init__
(
cls
,
classname
:
str
,
bases
:
Tuple
[
type
, ...],
dict_
:
Dict
[
str
,
Any
],
**
kw
:
Any
)
->
None
:
for
field_name
,
field_info
in
cls
.
__async_sqlmodel_awaitable_fields__
.
items
():
def
get_awaitable_field
(
self
,
field
:
str
=
field_info
.
field
)
->
Coroutine
[
Any
,
Any
,
Any
]:
return
greenlet_spawn
(
getattr
,
self
,
field
)
setattr
(
cls
,
field_name
,
property
(
get_awaitable_field
))
# type: ignore
SQLModelMetaclass
.
__init__
(
cls
,
classname
,
bases
,
dict_
,
**
kw
)
class
AsyncSQLModel
(
SQLModel
,
metaclass
=
AsyncSQLModelMetaclass
):
__async_sqlmodel_awaitable_fields__
:
ClassVar
[
Dict
[
str
,
AwaitableFieldInfo
]]
Back
|
FazBrowse Home
|
New Git URL