Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit17e12de

Browse files
CPython Developersyouknowone
CPython Developers
authored andcommitted
Update string, test_str* from cpython 3.10.6
1 parent14e86e1 commit17e12de

File tree

3 files changed

+24
-27
lines changed

3 files changed

+24
-27
lines changed

‎Lib/string.py

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -54,30 +54,7 @@ def capwords(s, sep=None):
5454

5555
_sentinel_dict= {}
5656

57-
class_TemplateMetaclass(type):
58-
pattern=r"""
59-
%(delim)s(?:
60-
(?P<escaped>%(delim)s) | # Escape sequence of two delimiters
61-
(?P<named>%(id)s) | # delimiter and a Python identifier
62-
{(?P<braced>%(bid)s)} | # delimiter and a braced identifier
63-
(?P<invalid>) # Other ill-formed delimiter exprs
64-
)
65-
"""
66-
67-
def__init__(cls,name,bases,dct):
68-
super(_TemplateMetaclass,cls).__init__(name,bases,dct)
69-
if'pattern'indct:
70-
pattern=cls.pattern
71-
else:
72-
pattern=_TemplateMetaclass.pattern% {
73-
'delim' :_re.escape(cls.delimiter),
74-
'id' :cls.idpattern,
75-
'bid' :cls.braceidpatternorcls.idpattern,
76-
}
77-
cls.pattern=_re.compile(pattern,cls.flags|_re.VERBOSE)
78-
79-
80-
classTemplate(metaclass=_TemplateMetaclass):
57+
classTemplate:
8158
"""A string class for supporting $-substitutions."""
8259

8360
delimiter='$'
@@ -89,6 +66,24 @@ class Template(metaclass=_TemplateMetaclass):
8966
braceidpattern=None
9067
flags=_re.IGNORECASE
9168

69+
def__init_subclass__(cls):
70+
super().__init_subclass__()
71+
if'pattern'incls.__dict__:
72+
pattern=cls.pattern
73+
else:
74+
delim=_re.escape(cls.delimiter)
75+
id=cls.idpattern
76+
bid=cls.braceidpatternorcls.idpattern
77+
pattern=fr"""
78+
{delim}(?:
79+
(?P<escaped>{delim}) | # Escape sequence of two delimiters
80+
(?P<named>{id}) | # delimiter and a Python identifier
81+
{{(?P<braced>{bid})}} | # delimiter and a braced identifier
82+
(?P<invalid>) # Other ill-formed delimiter exprs
83+
)
84+
"""
85+
cls.pattern=_re.compile(pattern,cls.flags|_re.VERBOSE)
86+
9287
def__init__(self,template):
9388
self.template=template
9489

@@ -146,6 +141,9 @@ def convert(mo):
146141
self.pattern)
147142
returnself.pattern.sub(convert,self.template)
148143

144+
# Initialize Template.pattern. __init_subclass__() is automatically called
145+
# only for subclasses, not for the Template class itself.
146+
Template.__init_subclass__()
149147

150148

151149
########################################################################

‎Lib/test/test_strftime.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def strftest1(self, now):
115115
)
116116

117117
foreinexpectations:
118-
#musn't raise a value error
118+
#mustn't raise a value error
119119
try:
120120
result=time.strftime(e[0],now)
121121
exceptValueErroraserror:

‎Lib/test/test_string_literals.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,6 @@ def byte(i):
6363

6464
classTestLiterals(unittest.TestCase):
6565

66-
fromtest.support.warnings_helperimportcheck_syntax_warning
67-
6866
defsetUp(self):
6967
self.save_path=sys.path[:]
7068
self.tmpdir=tempfile.mkdtemp()
@@ -133,6 +131,7 @@ def test_eval_str_invalid_escape(self):
133131
self.assertEqual(w, [])
134132
self.assertEqual(exc.filename,'<string>')
135133
self.assertEqual(exc.lineno,1)
134+
self.assertEqual(exc.offset,1)
136135

137136
# TODO: RUSTPYTHON
138137
@unittest.expectedFailure

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp