@@ -10,23 +10,23 @@ class HasHTML(te.Protocol):
1010 def __html__ (self ) -> str :
1111 pass
1212
13+ _P = te .ParamSpec ("_P" )
14+
1315
1416__version__ = "2.1.3.dev"
1517
1618_strip_comments_re = re .compile (r"<!--.*?-->" , re .DOTALL )
1719_strip_tags_re = re .compile (r"<.*?>" , re .DOTALL )
1820
1921
20- def _simple_escaping_wrapper (name : str ) -> t .Callable [..., "Markup" ]:
21- orig = getattr (str , name )
22-
23- @functools .wraps (orig )
24- def wrapped (self : "Markup" , * args : t .Any , ** kwargs : t .Any ) -> "Markup" :
25- args = _escape_argspec (list (args ), enumerate (args ), self .escape ) # type: ignore
22+ def _simple_escaping_wrapper (func : "t.Callable[_P, str]" ) -> "t.Callable[_P, Markup]" :
23+ @functools .wraps (func )
24+ def wrapped (self : "Markup" , * args : "_P.args" , ** kwargs : "_P.kwargs" ) -> "Markup" :
25+ arg_list = _escape_argspec (list (args ), enumerate (args ), self .escape )
2626 _escape_argspec (kwargs , kwargs .items (), self .escape )
27- return self .__class__ (orig (self , * args , ** kwargs ))
27+ return self .__class__ (func (self , * arg_list , ** kwargs )) # type: ignore[arg-type]
2828
29- return wrapped
29+ return wrapped # type: ignore[return-value]
3030
3131
3232class Markup (str ):
@@ -177,27 +177,22 @@ def escape(cls, s: t.Any) -> "Markup":
177177
178178 return rv
179179
180- for method in (
181- "__getitem__" ,
182- "capitalize" ,
183- "title" ,
184- "lower" ,
185- "upper" ,
186- "replace" ,
187- "ljust" ,
188- "rjust" ,
189- "lstrip" ,
190- "rstrip" ,
191- "center" ,
192- "strip" ,
193- "translate" ,
194- "expandtabs" ,
195- "swapcase" ,
196- "zfill" ,
197- ):
198- locals ()[method ] = _simple_escaping_wrapper (method )
199-
200- del method
180+ __getitem__ = _simple_escaping_wrapper (str .__getitem__ )
181+ capitalize = _simple_escaping_wrapper (str .capitalize )
182+ title = _simple_escaping_wrapper (str .title )
183+ lower = _simple_escaping_wrapper (str .lower )
184+ upper = _simple_escaping_wrapper (str .upper )
185+ replace = _simple_escaping_wrapper (str .replace )
186+ ljust = _simple_escaping_wrapper (str .ljust )
187+ rjust = _simple_escaping_wrapper (str .rjust )
188+ lstrip = _simple_escaping_wrapper (str .lstrip )
189+ rstrip = _simple_escaping_wrapper (str .rstrip )
190+ center = _simple_escaping_wrapper (str .center )
191+ strip = _simple_escaping_wrapper (str .strip )
192+ translate = _simple_escaping_wrapper (str .translate )
193+ expandtabs = _simple_escaping_wrapper (str .expandtabs )
194+ swapcase = _simple_escaping_wrapper (str .swapcase )
195+ zfill = _simple_escaping_wrapper (str .zfill )
201196
202197 def partition (self , sep : str ) -> t .Tuple ["Markup" , "Markup" , "Markup" ]:
203198 l , s , r = super ().partition (self .escape (sep ))
0 commit comments