11import functools
22import re
33import string
4+ import sys
45import typing as t
56
67if t .TYPE_CHECKING :
@@ -193,6 +194,11 @@ def escape(cls, s: t.Any) -> "Markup":
193194 expandtabs = _simple_escaping_wrapper (str .expandtabs )
194195 swapcase = _simple_escaping_wrapper (str .swapcase )
195196 zfill = _simple_escaping_wrapper (str .zfill )
197+ casefold = _simple_escaping_wrapper (str .casefold )
198+
199+ if sys .version_info >= (3 , 9 ):
200+ removeprefix = _simple_escaping_wrapper (str .removeprefix )
201+ removesuffix = _simple_escaping_wrapper (str .removesuffix )
196202
197203 def partition (self , sep : str ) -> t .Tuple ["Markup" , "Markup" , "Markup" ]:
198204 l , s , r = super ().partition (self .escape (sep ))
@@ -208,6 +214,10 @@ def format(self, *args: t.Any, **kwargs: t.Any) -> "Markup":
208214 formatter = EscapeFormatter (self .escape )
209215 return self .__class__ (formatter .vformat (self , args , kwargs ))
210216
217+ def format_map (self , map : t .Mapping [str , t .Any ]) -> str : # type: ignore[override]
218+ formatter = EscapeFormatter (self .escape )
219+ return self .__class__ (formatter .vformat (self , (), map ))
220+
211221 def __html_format__ (self , format_spec : str ) -> "Markup" :
212222 if format_spec :
213223 raise ValueError ("Unsupported format specification for Markup." )
0 commit comments