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 ForeignKeyField, ManyToManyField
46from plain.models.fields.related_managers import (
47 ManyToManyManager,
48 ReverseForeignKeyManager,
49)
50from plain.models.fields.reverse_descriptors import (
51 ReverseForeignKey,
52 ReverseManyToMany,
53)
54from plain.models.fields.timezones import TimeZoneField
55
56__all__ = [
57 "BigIntegerField",
58 "BinaryField",
59 "BooleanField",
60 "CharField",
61 "DateField",
62 "DateTimeField",
63 "DecimalField",
64 "DurationField",
65 "EmailField",
66 "FloatField",
67 "ForeignKeyField",
68 "GenericIPAddressField",
69 "IntegerField",
70 "JSONField",
71 "ManyToManyField",
72 "ManyToManyManager",
73 "ReverseForeignKey",
74 "ReverseForeignKeyManager",
75 "ReverseManyToMany",
76 "PositiveBigIntegerField",
77 "PositiveIntegerField",
78 "PositiveSmallIntegerField",
79 "PrimaryKeyField",
80 "SmallIntegerField",
81 "TextField",
82 "TimeField",
83 "TimeZoneField",
84 "URLField",
85 "UUIDField",
86]