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 DateField,
26 DateTimeField,
27 DecimalField,
28 DurationField,
29 EmailField,
30 FloatField,
31 GenericIPAddressField,
32 IntegerField,
33 PrimaryKeyField,
34 RandomStringField,
35 SmallIntegerField,
36 TextField,
37 TimeField,
38 URLField,
39 UUIDField,
40)
41from plain.postgres.fields.encrypted import (
42 EncryptedJSONField,
43 EncryptedTextField,
44)
45from plain.postgres.fields.json import JSONField
46from plain.postgres.fields.related import ForeignKeyField, ManyToManyField
47from plain.postgres.fields.related_managers import (
48 ManyToManyManager,
49 ReverseForeignKeyManager,
50)
51from plain.postgres.fields.reverse_descriptors import (
52 ReverseForeignKey,
53 ReverseManyToMany,
54)
55from plain.postgres.fields.timezones import TimeZoneField
56
57__all__ = [
58 "BigIntegerField",
59 "BinaryField",
60 "BooleanField",
61 "DateField",
62 "DateTimeField",
63 "DecimalField",
64 "DurationField",
65 "EmailField",
66 "EncryptedJSONField",
67 "EncryptedTextField",
68 "FloatField",
69 "ForeignKeyField",
70 "GenericIPAddressField",
71 "IntegerField",
72 "JSONField",
73 "ManyToManyField",
74 "ManyToManyManager",
75 "ReverseForeignKey",
76 "ReverseForeignKeyManager",
77 "ReverseManyToMany",
78 "PrimaryKeyField",
79 "RandomStringField",
80 "SmallIntegerField",
81 "TextField",
82 "TimeField",
83 "TimeZoneField",
84 "URLField",
85 "UUIDField",
86]