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

Commitfc914d5

Browse files
psphicasingydotnet
authored andcommitted
Avoid repeatedly appending to yaml_implicit_resolvers
Repeated calls to `resolve` can experience performance degredation, if`add_implicit_resolver` has been called with `first=None` (to add animplicit resolver with an unspecified first character).For example, every time `foo` is encountered, the "wildcard implicitresolvers" (with `first=None`) will be appended to the list of implicitresolvers for strings starting with `f`, which will normally be theresolver for booleans. The list `yaml_implicit_resolvers['f']` will keepgetting longer. The same behavior applies for any first-letter matcheswith existing implicit resolvers.This change avoids unintentionally mutating the lists in the class-leveldict `yaml_implicit_resolvers` by looping through a temporary copy.Fixes:#439
1 parenta001f27 commitfc914d5

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

‎lib/yaml/resolver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ def resolve(self, kind, value, implicit):
146146
resolvers=self.yaml_implicit_resolvers.get(u'', [])
147147
else:
148148
resolvers=self.yaml_implicit_resolvers.get(value[0], [])
149-
resolvers+=self.yaml_implicit_resolvers.get(None, [])
150-
fortag,regexpinresolvers:
149+
wildcard_resolvers=self.yaml_implicit_resolvers.get(None, [])
150+
fortag,regexpinresolvers+wildcard_resolvers:
151151
ifregexp.match(value):
152152
returntag
153153
implicit=implicit[1]

‎lib3/yaml/resolver.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,8 @@ def resolve(self, kind, value, implicit):
146146
resolvers=self.yaml_implicit_resolvers.get('', [])
147147
else:
148148
resolvers=self.yaml_implicit_resolvers.get(value[0], [])
149-
resolvers+=self.yaml_implicit_resolvers.get(None, [])
150-
fortag,regexpinresolvers:
149+
wildcard_resolvers=self.yaml_implicit_resolvers.get(None, [])
150+
fortag,regexpinresolvers+wildcard_resolvers:
151151
ifregexp.match(value):
152152
returntag
153153
implicit=implicit[1]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp