@@ -2,7 +2,7 @@ import argparse
22from _typeshed import ConvertibleToInt
33from collections .abc import Callable , Container
44from ssl import SSLContext , _SSLMethod
5- from typing import Annotated , Any , ClassVar , overload
5+ from typing import Annotated , Any , ClassVar , Final , overload
66from typing_extensions import TypeAlias
77
88from gunicorn .arbiter import Arbiter
@@ -34,6 +34,10 @@ _WorkerExitHookType: TypeAlias = Callable[[Arbiter, Worker], object]
3434_NumWorkersChangedHookType : TypeAlias = Callable [[Arbiter , int , int | None ], object ]
3535_OnExitHookType : TypeAlias = Callable [[Arbiter ], object ]
3636_SSLContextHookType : TypeAlias = Callable [[Config , Callable [[], SSLContext ]], SSLContext ]
37+ _OnDirtyStartingHookType : TypeAlias = Callable [[Arbiter ], object ]
38+ _DirtyPostForkHookType : TypeAlias = Callable [[Arbiter , Worker ], object ]
39+ _DirtyWorkerInitHookType : TypeAlias = Callable [[Worker ], object ]
40+ _DirtyWorkerExitHookType : TypeAlias = Callable [[Arbiter , Worker ], object ]
3741
3842_HookType : TypeAlias = (
3943 _OnStartingHookType
@@ -52,12 +56,16 @@ _HookType: TypeAlias = (
5256 | _NumWorkersChangedHookType
5357 | _OnExitHookType
5458 | _SSLContextHookType
59+ | _OnDirtyStartingHookType
60+ | _DirtyPostForkHookType
61+ | _DirtyWorkerInitHookType
62+ | _DirtyWorkerExitHookType
5563)
5664# Validators
5765_BoolValidatorType : TypeAlias = Callable [[bool | str | None ], bool | None ]
5866_StringValidatorType : TypeAlias = Callable [[str | None ], str | None ]
5967_ListStringValidatorType : TypeAlias = Callable [[str | list [str ] | None ], list [str ]]
60- _IntValidatorType : TypeAlias = Callable [[int | ConvertibleToInt ], int ]
68+ _IntValidatorType : TypeAlias = Callable [[ConvertibleToInt ], int ]
6169_DictValidatorType : TypeAlias = Callable [[dict [str , Any ]], dict [str , Any ]]
6270_ClassValidatorType : TypeAlias = Callable [[object | str | None ], type [Any ] | None ]
6371_UserGroupValidatorType : TypeAlias = Callable [[str | int | None ], int ]
@@ -66,6 +74,8 @@ _CallableValidatorType: TypeAlias = Callable[[str | _HookType], _HookType]
6674_ProxyProtocolValidatorType : TypeAlias = Callable [[str | bool | None ], str ]
6775_ASGILoopValidatorType : TypeAlias = Callable [[str | None ], str ]
6876_ASGILifespanValidatorType : TypeAlias = Callable [[str | None ], str ]
77+ _HTTP2FrameSizeValidatorType : TypeAlias = Callable [[ConvertibleToInt ], int ]
78+ _HTTPProtocolsValidatorType : TypeAlias = Callable [[str | None ], list [str ]]
6979
7080_ValidatorType : TypeAlias = ( # noqa: Y047
7181 _BoolValidatorType
@@ -80,6 +90,8 @@ _ValidatorType: TypeAlias = ( # noqa: Y047
8090 | _ProxyProtocolValidatorType
8191 | _ASGILoopValidatorType
8292 | _ASGILifespanValidatorType
93+ | _HTTP2FrameSizeValidatorType
94+ | _HTTPProtocolsValidatorType
8395)
8496
8597KNOWN_SETTINGS : list [Setting ]
@@ -163,10 +175,8 @@ def validate_bool(val: None) -> None: ...
163175@overload
164176def validate_bool (val : Annotated [str , "Case-insensitive boolean string ('true'/'false' in any case)" ]) -> bool : ...
165177def validate_dict (val : dict [str , Any ]) -> dict [str , Any ]: ...
166- @overload
167- def validate_pos_int (val : int ) -> int : ...
168- @overload
169178def validate_pos_int (val : ConvertibleToInt ) -> int : ...
179+ def validate_http2_frame_size (val : ConvertibleToInt ) -> int : ...
170180def validate_ssl_version (val : _SSLMethod ) -> _SSLMethod : ...
171181@overload
172182def validate_string (val : str ) -> str : ...
@@ -176,18 +186,8 @@ def validate_string(val: None) -> None: ...
176186def validate_file_exists (val : str ) -> str : ...
177187@overload
178188def validate_file_exists (val : None ) -> None : ...
179- @overload
180- def validate_list_string (val : str ) -> list [str ]: ...
181- @overload
182- def validate_list_string (val : list [str ]) -> list [str ]: ...
183- @overload
184- def validate_list_string (val : None ) -> list [str ]: ...
185- @overload
186- def validate_list_of_existing_files (val : str ) -> list [str ]: ...
187- @overload
188- def validate_list_of_existing_files (val : list [str ]) -> list [str ]: ...
189- @overload
190- def validate_list_of_existing_files (val : None ) -> list [str ]: ...
189+ def validate_list_string (val : str | list [str ] | None ) -> list [str ]: ...
190+ def validate_list_of_existing_files (val : str | list [str ] | None ) -> list [str ]: ...
191191def validate_string_to_addr_list (val : str | None ) -> list [str ]: ...
192192def validate_string_to_list (val : str | None ) -> list [str ]: ...
193193@overload
@@ -766,7 +766,7 @@ class Paste(Setting):
766766class OnStarting (Setting ):
767767 name : ClassVar [str ]
768768 section : ClassVar [str ]
769- validator : ClassVar [_CallableValidatorType ] = ...
769+ validator : ClassVar [_CallableValidatorType ]
770770 type : ClassVar [Callable [..., Any ]]
771771 default : ClassVar [_OnStartingHookType ]
772772 desc : ClassVar [str ]
@@ -1029,6 +1029,60 @@ class Ciphers(Setting):
10291029 default : ClassVar [None ]
10301030 desc : ClassVar [str ]
10311031
1032+ VALID_HTTP_PROTOCOLS : Final [frozenset [str ]]
1033+ ALPN_PROTOCOL_MAP : Final [dict [str , str ]]
1034+
1035+ def validate_http_protocols (val : str | None ) -> list [str ]: ...
1036+
1037+ class HTTPProtocols (Setting ):
1038+ name : ClassVar [str ]
1039+ section : ClassVar [str ]
1040+ cli : ClassVar [list [str ]]
1041+ meta : ClassVar [str ]
1042+ validator : ClassVar [_HTTPProtocolsValidatorType ]
1043+ default : ClassVar [str ]
1044+ desc : ClassVar [str ]
1045+
1046+ class HTTP2MaxConcurrentStreams (Setting ):
1047+ name : ClassVar [str ]
1048+ section : ClassVar [str ]
1049+ cli : ClassVar [list [str ]]
1050+ meta : ClassVar [str ]
1051+ validator : ClassVar [_IntValidatorType ]
1052+ type : ClassVar [type [int ]]
1053+ default : ClassVar [int ]
1054+ desc : ClassVar [str ]
1055+
1056+ class HTTP2InitialWindowSize (Setting ):
1057+ name : ClassVar [str ]
1058+ section : ClassVar [str ]
1059+ cli : ClassVar [list [str ]]
1060+ meta : ClassVar [str ]
1061+ validator : ClassVar [_IntValidatorType ]
1062+ type : ClassVar [type [int ]]
1063+ default : ClassVar [int ]
1064+ desc : ClassVar [str ]
1065+
1066+ class HTTP2MaxFrameSize (Setting ):
1067+ name : ClassVar [str ]
1068+ section : ClassVar [str ]
1069+ cli : ClassVar [list [str ]]
1070+ meta : ClassVar [str ]
1071+ validator : ClassVar [_HTTP2FrameSizeValidatorType ]
1072+ type : ClassVar [type [int ]]
1073+ default : ClassVar [int ]
1074+ desc : ClassVar [str ]
1075+
1076+ class HTTP2MaxHeaderListSize (Setting ):
1077+ name : ClassVar [str ]
1078+ section : ClassVar [str ]
1079+ cli : ClassVar [list [str ]]
1080+ meta : ClassVar [str ]
1081+ validator : ClassVar [_IntValidatorType ]
1082+ type : ClassVar [type [int ]]
1083+ default : ClassVar [int ]
1084+ desc : ClassVar [str ]
1085+
10321086class PasteGlobalConf (Setting ):
10331087 name : ClassVar [str ]
10341088 action : ClassVar [str ]
@@ -1129,3 +1183,93 @@ class RootPath(Setting):
11291183 validator : ClassVar [_StringValidatorType ]
11301184 default : ClassVar [str ]
11311185 desc : ClassVar [str ]
1186+
1187+ class DirtyApps (Setting ):
1188+ name : ClassVar [str ]
1189+ section : ClassVar [str ]
1190+ cli : ClassVar [list [str ]]
1191+ action : ClassVar [str ]
1192+ meta : ClassVar [str ]
1193+ validator : ClassVar [_ListStringValidatorType ]
1194+ default : ClassVar [list [str ]]
1195+ desc : ClassVar [str ]
1196+
1197+ class DirtyWorkers (Setting ):
1198+ name : ClassVar [str ]
1199+ section : ClassVar [str ]
1200+ cli : ClassVar [list [str ]]
1201+ meta : ClassVar [str ]
1202+ validator : ClassVar [_IntValidatorType ]
1203+ type : ClassVar [type [int ]]
1204+ default : ClassVar [int ]
1205+ desc : ClassVar [str ]
1206+
1207+ class DirtyTimeout (Setting ):
1208+ name : ClassVar [str ]
1209+ section : ClassVar [str ]
1210+ cli : ClassVar [list [str ]]
1211+ meta : ClassVar [str ]
1212+ validator : ClassVar [_IntValidatorType ]
1213+ type : ClassVar [type [int ]]
1214+ default : ClassVar [int ]
1215+ desc : ClassVar [str ]
1216+
1217+ class DirtyThreads (Setting ):
1218+ name : ClassVar [str ]
1219+ section : ClassVar [str ]
1220+ cli : ClassVar [list [str ]]
1221+ meta : ClassVar [str ]
1222+ validator : ClassVar [_IntValidatorType ]
1223+ type : ClassVar [type [int ]]
1224+ default : ClassVar [int ]
1225+ desc : ClassVar [str ]
1226+
1227+ class DirtyGracefulTimeout (Setting ):
1228+ name : ClassVar [str ]
1229+ section : ClassVar [str ]
1230+ cli : ClassVar [list [str ]]
1231+ meta : ClassVar [str ]
1232+ validator : ClassVar [_IntValidatorType ]
1233+ type : ClassVar [type [int ]]
1234+ default : ClassVar [int ]
1235+ desc : ClassVar [str ]
1236+
1237+ class OnDirtyStarting (Setting ):
1238+ name : ClassVar [str ]
1239+ section : ClassVar [str ]
1240+ validator : ClassVar [_CallableValidatorType ]
1241+ type : ClassVar [Callable [..., Any ]]
1242+ default : ClassVar [_OnDirtyStartingHookType ]
1243+ desc : ClassVar [str ]
1244+
1245+ def on_dirty_starting (arbiter : Arbiter ) -> None : ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues]
1246+
1247+ class DirtyPostFork (Setting ):
1248+ name : ClassVar [str ]
1249+ section : ClassVar [str ]
1250+ validator : ClassVar [_CallableValidatorType ]
1251+ type : ClassVar [Callable [..., Any ]]
1252+ default : ClassVar [_DirtyPostForkHookType ]
1253+ desc : ClassVar [str ]
1254+
1255+ def dirty_post_fork (arbiter : Arbiter , worker : Worker ) -> None : ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues]
1256+
1257+ class DirtyWorkerInit (Setting ):
1258+ name : ClassVar [str ]
1259+ section : ClassVar [str ]
1260+ validator : ClassVar [_CallableValidatorType ]
1261+ type : ClassVar [Callable [..., Any ]]
1262+ default : ClassVar [_DirtyWorkerInitHookType ]
1263+ desc : ClassVar [str ]
1264+
1265+ def dirty_worker_init (worker : Worker ) -> None : ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues]
1266+
1267+ class DirtyWorkerExit (Setting ):
1268+ name : ClassVar [str ]
1269+ section : ClassVar [str ]
1270+ validator : ClassVar [_CallableValidatorType ]
1271+ type : ClassVar [Callable [..., Any ]]
1272+ default : ClassVar [_DirtyWorkerExitHookType ]
1273+ desc : ClassVar [str ]
1274+
1275+ def dirty_worker_exit (arbiter : Arbiter , worker : Worker ) -> None : ... # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues]
0 commit comments