From d34a45daa91aaecb6143ff8c598d42c8e0db0b2a Mon Sep 17 00:00:00 2001 From: Andrew Mitchell <32021055+mitch292@users.noreply.github.com> Date: Sun, 4 Oct 2020 10:45:59 -0400 Subject: [PATCH] sre parse_template allows byte sources (#4604) Resolves #4331 --- stdlib/3/sre_parse.pyi | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/stdlib/3/sre_parse.pyi b/stdlib/3/sre_parse.pyi index 3f9fb0376..76115a1cb 100644 --- a/stdlib/3/sre_parse.pyi +++ b/stdlib/3/sre_parse.pyi @@ -2,7 +2,7 @@ import sys from sre_constants import _NamedIntConstant as _NIC, error as _Error -from typing import Any, Dict, FrozenSet, Iterable, List, Match, Optional, Pattern as _Pattern, Tuple, Union +from typing import Any, Dict, FrozenSet, Iterable, List, Match, Optional, Pattern as _Pattern, Tuple, Union, overload SPECIAL_CHARS: str REPEAT_CHARS: str @@ -85,13 +85,20 @@ class Tokenizer: def fix_flags(src: Union[str, bytes], flags: int) -> int: ... -_TemplateType = Tuple[List[Tuple[int, int]], List[str]] +_TemplateType = Tuple[List[Tuple[int, int]], List[Optional[str]]] +_TemplateByteType = Tuple[List[Tuple[int, int]], List[Optional[bytes]]] if sys.version_info >= (3, 8): def parse(str: str, flags: int = ..., state: Optional[State] = ...) -> SubPattern: ... + @overload def parse_template(source: str, state: _Pattern[Any]) -> _TemplateType: ... + @overload + def parse_template(source: bytes, state: _Pattern[Any]) -> _TemplateByteType: ... else: def parse(str: str, flags: int = ..., pattern: Optional[Pattern] = ...) -> SubPattern: ... + @overload def parse_template(source: str, pattern: _Pattern[Any]) -> _TemplateType: ... + @overload + def parse_template(source: bytes, pattern: _Pattern[Any]) -> _TemplateByteType: ... def expand_template(template: _TemplateType, match: Match[Any]) -> str: ...