diff --git a/stubs/gunicorn/METADATA.toml b/stubs/gunicorn/METADATA.toml index 3725c9c6add0..5464efe0bd00 100644 --- a/stubs/gunicorn/METADATA.toml +++ b/stubs/gunicorn/METADATA.toml @@ -1,4 +1,4 @@ -version = "26.0.0" +version = "26.1.0" upstream-repository = "https://github.com/benoitc/gunicorn" optional-dependencies = ["types-gevent"] diff --git a/stubs/gunicorn/gunicorn/arbiter.pyi b/stubs/gunicorn/gunicorn/arbiter.pyi index 15710a89669d..422a711477c6 100644 --- a/stubs/gunicorn/gunicorn/arbiter.pyi +++ b/stubs/gunicorn/gunicorn/arbiter.pyi @@ -75,5 +75,6 @@ class Arbiter: def kill_worker(self, pid: int, sig: int) -> None: ... def spawn_dirty_arbiter(self) -> int | None: ... def kill_dirty_arbiter(self, sig: int) -> None: ... + def handle_dirty_arbiter_exit(self, wpid: int, status: int) -> None: ... def reap_dirty_arbiter(self) -> None: ... def manage_dirty_arbiter(self) -> None: ... diff --git a/stubs/gunicorn/gunicorn/asgi/parser.pyi b/stubs/gunicorn/gunicorn/asgi/parser.pyi index f98f04a0f178..1cdb54519985 100644 --- a/stubs/gunicorn/gunicorn/asgi/parser.pyi +++ b/stubs/gunicorn/gunicorn/asgi/parser.pyi @@ -54,6 +54,8 @@ class UnsupportedTransferCoding(ParseError): ... class InvalidChunkSize(ParseError): ... class InvalidChunkExtension(ParseError): ... +RFC9110_5_3_SINGLETON_FIELDS: Final[frozenset[bytes]] + class PythonProtocol: __slots__ = ( "_on_message_begin", diff --git a/stubs/gunicorn/gunicorn/config.pyi b/stubs/gunicorn/gunicorn/config.pyi index 8eabbee8eddd..c8ef8e0da045 100644 --- a/stubs/gunicorn/gunicorn/config.pyi +++ b/stubs/gunicorn/gunicorn/config.pyi @@ -192,7 +192,7 @@ def validate_file_exists(val: str) -> str: ... def validate_file_exists(val: None) -> None: ... def validate_list_string(val: str | list[str] | None) -> list[str]: ... -def validate_list_of_existing_files(val: str | list[str] | None) -> list[str]: ... +def validate_list_of_files_or_patterns(val: str | list[str] | None) -> list[str]: ... def validate_string_to_addr_list(val: str | None) -> list[str]: ... def validate_string_to_list(val: str | None) -> list[str]: ... diff --git a/stubs/gunicorn/gunicorn/http/message.pyi b/stubs/gunicorn/gunicorn/http/message.pyi index 4819ab116870..3f593c5aaeec 100644 --- a/stubs/gunicorn/gunicorn/http/message.pyi +++ b/stubs/gunicorn/gunicorn/http/message.pyi @@ -36,6 +36,7 @@ METHOD_BADCHAR_RE: Final[re.Pattern[str]] VERSION_RE: Final[re.Pattern[str]] RFC9110_5_5_INVALID_AND_DANGEROUS: Final[re.Pattern[str]] RFC9110_6_5_1_FORBIDDEN_TRAILER: Final[frozenset[str]] +RFC9110_5_3_SINGLETON_FIELDS: Final[frozenset[str]] class Message: cfg: Config diff --git a/stubs/gunicorn/gunicorn/util.pyi b/stubs/gunicorn/gunicorn/util.pyi index bc71a50e5d2b..f635cef2e69b 100644 --- a/stubs/gunicorn/gunicorn/util.pyi +++ b/stubs/gunicorn/gunicorn/util.pyi @@ -1,16 +1,19 @@ import types from _typeshed import FileDescriptorLike, FileDescriptorOrPath, StrOrBytesPath from inspect import _IntrospectableCallable, _ParameterKind +from re import Pattern from socket import socket -from typing import Any, Literal +from typing import Any, Final, Literal from typing_extensions import Never from urllib.parse import SplitResult from ._types import _AddressType, _WSGIAppType -REDIRECT_TO: str +REDIRECT_TO: Final[str] +GLOB_MAGIC_RE: Final[Pattern[str]] hop_headers: set[str] +def is_glob_pattern(value: str) -> bool: ... def load_entry_point(distribution: str, group: str, name: str) -> type[object]: ... def load_class( uri: str | object, default: str = "gunicorn.workers.sync.SyncWorker", section: str = "gunicorn.workers"