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]