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]