1"""
2Type stubs for typed password fields.
3
4These stubs tell type checkers that field constructors return primitive types,
5enabling typed model definitions like:
6 password: str = types.PasswordField()
7
8At runtime, these are Field instances (descriptors), but type checkers see the primitives.
9
10The return type is conditional on allow_null:
11- allow_null=False (default) returns str
12- allow_null=True returns str | None
13"""
14
15from collections.abc import Callable, Sequence
16from typing import Any, Literal, overload
17
18# PasswordField extends CharField with password-specific hashing
19@overload
20def PasswordField(
21 *,
22 required: bool = True,
23 allow_null: Literal[True],
24 default: Any = ...,
25 choices: Any = None,
26 db_column: str | None = None,
27 db_collation: str | None = None,
28 validators: Sequence[Callable[..., Any]] = (),
29 error_messages: dict[str, str] | None = None,
30 db_comment: str | None = None,
31) -> str | None: ...
32@overload
33def PasswordField(
34 *,
35 required: bool = True,
36 allow_null: Literal[False] = False,
37 default: Any = ...,
38 choices: Any = None,
39 db_column: str | None = None,
40 db_collation: str | None = None,
41 validators: Sequence[Callable[..., Any]] = (),
42 error_messages: dict[str, str] | None = None,
43 db_comment: str | None = None,
44) -> str: ...