From b1ea3938d1980564bd7dcfdb2255fa527c8bda65 Mon Sep 17 00:00:00 2001 From: Willem van Bergen Date: Sat, 23 May 2026 05:16:21 -0400 Subject: [PATCH 1/2] [Flask-Cors] Update type annotation for origins to also allow Pattern --- stubs/Flask-Cors/flask_cors/core.pyi | 8 ++------ stubs/Flask-Cors/flask_cors/extension.pyi | 5 +++-- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/stubs/Flask-Cors/flask_cors/core.pyi b/stubs/Flask-Cors/flask_cors/core.pyi index a0783f797a07..88f8053f5e61 100644 --- a/stubs/Flask-Cors/flask_cors/core.pyi +++ b/stubs/Flask-Cors/flask_cors/core.pyi @@ -13,10 +13,10 @@ _MultiDict: TypeAlias = Any # werkzeug is not part of typeshed @type_check_only class _Options(TypedDict, total=False): resources: dict[str, dict[str, Any]] | list[str] | str | None - origins: str | list[str] | None + origins: Iterable[str | Pattern[str]] methods: str | list[str] | None expose_headers: str | list[str] | None - allow_headers: str | list[str] | None + allow_headers: Iterable[str | Pattern[str]] supports_credentials: bool | None max_age: timedelta | int | str | None send_wildcard: bool | None @@ -49,12 +49,10 @@ def get_cors_origins(options: _Options, request_origin: str | None) -> list[str] def get_allow_headers(options: _Options, acl_request_headers: str | None) -> str | None: ... def get_cors_headers(options: _Options, request_headers: dict[str, Any], request_method: str) -> _MultiDict: ... def set_cors_headers(resp: flask.Response, options: _Options) -> flask.Response: ... - @overload def probably_regex(maybe_regex: Pattern[str]) -> Literal[True]: ... @overload def probably_regex(maybe_regex: str) -> bool: ... - def re_fix(reg: str) -> str: ... def try_match_any_pattern(inst: str, patterns: Iterable[str | Pattern[str]], caseSensitive: bool = True) -> bool: ... def try_match_pattern(value: str, pattern: str | Pattern[str], caseSensitive: bool = True) -> bool | Match[str]: ... @@ -62,13 +60,11 @@ def get_cors_options(appInstance: flask.Flask | None, *dicts: _Options) -> _Opti def get_app_kwarg_dict(appInstance: flask.Flask | None = None) -> _Options: ... def flexible_str(obj: object) -> str | None: ... def serialize_option(options_dict: _Options, key: str, upper: bool = False) -> None: ... - @overload def ensure_iterable(inst: str) -> list[str]: ... # type: ignore[overload-overlap] @overload def ensure_iterable(inst: _IterableT) -> _IterableT: ... # type: ignore[overload-overlap] @overload def ensure_iterable(inst: _T) -> list[_T]: ... - def sanitize_regex_param(param: str | list[str]) -> list[str]: ... def serialize_options(opts: _Options) -> _Options: ... diff --git a/stubs/Flask-Cors/flask_cors/extension.pyi b/stubs/Flask-Cors/flask_cors/extension.pyi index 3120e406e2de..7617107da5da 100644 --- a/stubs/Flask-Cors/flask_cors/extension.pyi +++ b/stubs/Flask-Cors/flask_cors/extension.pyi @@ -1,6 +1,7 @@ from collections.abc import Callable, Iterable from datetime import timedelta from logging import Logger +from re import Pattern from typing import Any import flask @@ -13,7 +14,7 @@ class CORS: app: flask.Flask | flask.Blueprint | None = None, *, resources: dict[str, dict[str, Any]] | list[str] | str | None = ..., - origins: str | list[str] | None = ..., + origins: str | Pattern[str] | Iterable[str | Pattern[str]] = ..., methods: str | list[str] | None = ..., expose_headers: str | list[str] | None = ..., allow_headers: str | list[str] | None = ..., @@ -28,7 +29,7 @@ class CORS: app: flask.Flask, *, resources: dict[str, dict[str, Any]] | list[str] | str = ..., - origins: str | list[str] = ..., + origins: str | Pattern[str] | Iterable[str | Pattern[str]] = ..., methods: str | list[str] = ..., expose_headers: str | list[str] = ..., allow_headers: str | list[str] = ..., From e3cb3119ce248af62b02a6dfd5c1b2847942472b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 08:28:14 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/Flask-Cors/flask_cors/core.pyi | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stubs/Flask-Cors/flask_cors/core.pyi b/stubs/Flask-Cors/flask_cors/core.pyi index 88f8053f5e61..5b5e2d78561d 100644 --- a/stubs/Flask-Cors/flask_cors/core.pyi +++ b/stubs/Flask-Cors/flask_cors/core.pyi @@ -49,10 +49,12 @@ def get_cors_origins(options: _Options, request_origin: str | None) -> list[str] def get_allow_headers(options: _Options, acl_request_headers: str | None) -> str | None: ... def get_cors_headers(options: _Options, request_headers: dict[str, Any], request_method: str) -> _MultiDict: ... def set_cors_headers(resp: flask.Response, options: _Options) -> flask.Response: ... + @overload def probably_regex(maybe_regex: Pattern[str]) -> Literal[True]: ... @overload def probably_regex(maybe_regex: str) -> bool: ... + def re_fix(reg: str) -> str: ... def try_match_any_pattern(inst: str, patterns: Iterable[str | Pattern[str]], caseSensitive: bool = True) -> bool: ... def try_match_pattern(value: str, pattern: str | Pattern[str], caseSensitive: bool = True) -> bool | Match[str]: ... @@ -60,11 +62,13 @@ def get_cors_options(appInstance: flask.Flask | None, *dicts: _Options) -> _Opti def get_app_kwarg_dict(appInstance: flask.Flask | None = None) -> _Options: ... def flexible_str(obj: object) -> str | None: ... def serialize_option(options_dict: _Options, key: str, upper: bool = False) -> None: ... + @overload def ensure_iterable(inst: str) -> list[str]: ... # type: ignore[overload-overlap] @overload def ensure_iterable(inst: _IterableT) -> _IterableT: ... # type: ignore[overload-overlap] @overload def ensure_iterable(inst: _T) -> list[_T]: ... + def sanitize_regex_param(param: str | list[str]) -> list[str]: ... def serialize_options(opts: _Options) -> _Options: ...