Plain is headed towards 1.0! Subscribe for development updates →

 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: ...