44import pathlib
55import re
66import uuid
7- from typing import Any , Sequence , Dict , Type , Union , get_origin , List , Final
7+ from typing import Any , Dict , Final , List , Sequence , Type , Union , get_origin
88
99try :
1010 # Handle the change in typing between 3.8 and later releases
11- from typing import T , KT , VT
11+ from typing import KT , VT , T
1212except ImportError :
1313 T = None
1414 KT = None
1515 VT = None
1616
1717import odin
18- from .special_fields import AnyField
19- from .type_aliases import Validator , Choices , Email , IPv4 , IPv6 , IPv46 , Url
20- from .. import ListOf , DictOf
18+
2119from ..exceptions import ResourceDefError
2220from ..fields import (
2321 BaseField ,
22+ DictField ,
2423 Field ,
24+ ListField ,
2525 NotProvided ,
26- TypedListField ,
2726 TypedDictField ,
28- ListField ,
29- DictField ,
27+ TypedListField ,
28+ BooleanField ,
29+ DateField ,
30+ IPv6Field ,
31+ EmailField ,
32+ DateTimeField ,
33+ FloatField ,
34+ IntegerField ,
35+ IPv4Field ,
36+ IPv46Field ,
37+ PathField ,
38+ RegexField ,
39+ StringField ,
40+ TimeField ,
41+ UrlField ,
42+ UUIDField ,
3043)
44+ from ..fields .composite import DictOf , ListOf
3145from ..fields .virtual import ConstantField
3246from ..resources import ResourceBase
47+ from .special_fields import AnyField
48+ from .type_aliases import Choices , Email , IPv4 , IPv6 , IPv46 , Url , Validator
3349
3450
3551class Options :
@@ -44,8 +60,8 @@ class Options:
4460
4561 def __init__ (
4662 self ,
47- default : Any = odin . NotProvided ,
48- field_type : Type [odin . BaseField ] = None ,
63+ default : Any = NotProvided ,
64+ field_type : Type [BaseField ] = None ,
4965 * ,
5066 verbose_name : str = None ,
5167 verbose_name_plural : str = None ,
@@ -112,23 +128,23 @@ def init_field(self):
112128
113129
114130SIMPLE_TYPE_MAP = {
115- bool : odin . BooleanField ,
116- datetime .date : odin . DateField ,
117- datetime .datetime : odin . DateTimeField ,
118- dict : odin . DictField ,
119- Email : odin . EmailField ,
120- float : odin . FloatField ,
121- int : odin . IntegerField ,
122- IPv4 : odin . IPv4Field ,
123- IPv6 : odin . IPv6Field ,
124- IPv46 : odin . IPv46Field ,
125- list : odin . ListField ,
126- pathlib .Path : odin . PathField ,
127- re .Pattern : odin . RegexField ,
128- str : odin . StringField ,
129- datetime .time : odin . TimeField ,
130- Url : odin . UrlField ,
131- uuid .UUID : odin . UUIDField ,
131+ bool : BooleanField ,
132+ datetime .date : DateField ,
133+ datetime .datetime : DateTimeField ,
134+ dict : DictField ,
135+ Email : EmailField ,
136+ float : FloatField ,
137+ int : IntegerField ,
138+ IPv4 : IPv4Field ,
139+ IPv6 : IPv6Field ,
140+ IPv46 : IPv46Field ,
141+ list : ListField ,
142+ pathlib .Path : PathField ,
143+ re .Pattern : RegexField ,
144+ str : StringField ,
145+ datetime .time : TimeField ,
146+ Url : UrlField ,
147+ uuid .UUID : UUIDField ,
132148 Any : AnyField , # For Python 3.11
133149}
134150
0 commit comments