1"""
2Typed field imports for better IDE and type checker support.
3
4This module provides the same field classes as plain.models.fields,
5but with a companion .pyi stub file that makes type checkers interpret
6field assignments as their primitive Python types.
7
8Usage:
9 from plain.models import types
10
11 @models.register_model
12 class User(models.Model):
13 email: str = types.EmailField()
14 age: int = types.IntegerField()
15 is_active: bool = types.BooleanField(default=True)
16
17This is optional - you can continue using untyped field definitions.
18"""
19
20# Re-export scalar field types
21from plain.models.fields import (
22 BigIntegerField,
23 BinaryField,
24 BooleanField,
25 CharField,
26 DateField,
27 DateTimeField,
28 DecimalField,
29 DurationField,
30 EmailField,
31 FloatField,
32 GenericIPAddressField,
33 IntegerField,
34 PositiveBigIntegerField,
35 PositiveIntegerField,
36 PositiveSmallIntegerField,
37 PrimaryKeyField,
38 SmallIntegerField,
39 TextField,
40 TimeField,
41 URLField,
42 UUIDField,
43)
44from plain.models.fields.json import JSONField
45from plain.models.fields.related import ForeignKey, ManyToManyField
46
47__all__ = [
48 "BigIntegerField",
49 "BinaryField",
50 "BooleanField",
51 "CharField",
52 "DateField",
53 "DateTimeField",
54 "DecimalField",
55 "DurationField",
56 "EmailField",
57 "FloatField",
58 "ForeignKey",
59 "GenericIPAddressField",
60 "IntegerField",
61 "JSONField",
62 "ManyToManyField",
63 "PositiveBigIntegerField",
64 "PositiveIntegerField",
65 "PositiveSmallIntegerField",
66 "PrimaryKeyField",
67 "SmallIntegerField",
68 "TextField",
69 "TimeField",
70 "URLField",
71 "UUIDField",
72]