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 validators: Sequence[Callable[..., Any]] = (),
27 error_messages: dict[str, str] | None = None,
28) -> str | None: ...
29@overload
30def PasswordField(
31 *,
32 required: bool = True,
33 allow_null: Literal[False] = False,
34 default: Any = ...,
35 choices: Any = None,
36 validators: Sequence[Callable[..., Any]] = (),
37 error_messages: dict[str, str] | None = None,
38) -> str: ...