1"""
 2Typed field imports for better IDE and type checker support.
 3
 4This module provides the same field classes as plain.postgres.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.postgres import types
10
11    @postgres.register_model
12    class User(postgres.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.postgres.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.postgres.fields.encrypted import (
45    EncryptedJSONField,
46    EncryptedTextField,
47)
48from plain.postgres.fields.json import JSONField
49from plain.postgres.fields.related import ForeignKeyField, ManyToManyField
50from plain.postgres.fields.related_managers import (
51    ManyToManyManager,
52    ReverseForeignKeyManager,
53)
54from plain.postgres.fields.reverse_descriptors import (
55    ReverseForeignKey,
56    ReverseManyToMany,
57)
58from plain.postgres.fields.timezones import TimeZoneField
59
60__all__ = [
61    "BigIntegerField",
62    "BinaryField",
63    "BooleanField",
64    "CharField",
65    "DateField",
66    "DateTimeField",
67    "DecimalField",
68    "DurationField",
69    "EmailField",
70    "EncryptedJSONField",
71    "EncryptedTextField",
72    "FloatField",
73    "ForeignKeyField",
74    "GenericIPAddressField",
75    "IntegerField",
76    "JSONField",
77    "ManyToManyField",
78    "ManyToManyManager",
79    "ReverseForeignKey",
80    "ReverseForeignKeyManager",
81    "ReverseManyToMany",
82    "PositiveBigIntegerField",
83    "PositiveIntegerField",
84    "PositiveSmallIntegerField",
85    "PrimaryKeyField",
86    "SmallIntegerField",
87    "TextField",
88    "TimeField",
89    "TimeZoneField",
90    "URLField",
91    "UUIDField",
92]