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

Commit40d007a

Browse files
committed
Fix the moduleFactoryFactory to cache based on *args and **kwargs.
1 parente1d9a5b commit40d007a

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

‎html5lib/tests/test_parser2.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ def test_namespace_html_elements_1_dom(self):
4040
deftest_namespace_html_elements_0_etree(self):
4141
parser=html5parser.HTMLParser(namespaceHTMLElements=True)
4242
doc=parser.parse("<html></html>")
43-
self.assertTrue(list(doc)[0].tag=="{%s}html"% (namespaces["html"],))
43+
self.assertTrue(doc.tag=="{%s}html"% (namespaces["html"],))
4444

4545
deftest_namespace_html_elements_1_etree(self):
4646
parser=html5parser.HTMLParser(namespaceHTMLElements=False)
4747
doc=parser.parse("<html></html>")
48-
self.assertTrue(list(doc)[0].tag=="html")
48+
self.assertTrue(doc.tag=="html")
4949

5050
deftest_unicode_file(self):
5151
parser=html5parser.HTMLParser()

‎html5lib/tests/test_treewalkers.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def PullDOMAdapter(node):
6060
pass
6161
else:
6262
treeTypes['ElementTree']= \
63-
{"builder":treebuilders.getTreeBuilder("etree",ElementTree),
63+
{"builder":treebuilders.getTreeBuilder("etree",ElementTree,fullTree=True),
6464
"walker":treewalkers.getTreeWalker("etree",ElementTree)}
6565

6666
try:
@@ -69,7 +69,7 @@ def PullDOMAdapter(node):
6969
pass
7070
else:
7171
treeTypes['cElementTree']= \
72-
{"builder":treebuilders.getTreeBuilder("etree",ElementTree),
72+
{"builder":treebuilders.getTreeBuilder("etree",ElementTree,fullTree=True),
7373
"walker":treewalkers.getTreeWalker("etree",ElementTree)}
7474

7575

‎html5lib/utils.py‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,13 +91,21 @@ def moduleFactory(baseModule, *args, **kwargs):
9191
else:
9292
name=b"_%s_factory"%baseModule.__name__
9393

94-
ifnameinmoduleCache:
95-
returnmoduleCache[name]
96-
else:
94+
kwargs_tuple=tuple(kwargs.items())
95+
96+
try:
97+
returnmoduleCache[name][args][kwargs_tuple]
98+
exceptKeyError:
9799
mod=ModuleType(name)
98100
objs=factory(baseModule,*args,**kwargs)
99101
mod.__dict__.update(objs)
100-
moduleCache[name]=mod
102+
if"name"notinmoduleCache:
103+
moduleCache[name]= {}
104+
if"args"notinmoduleCache[name]:
105+
moduleCache[name][args]= {}
106+
if"kwargs"notinmoduleCache[name][args]:
107+
moduleCache[name][args][kwargs_tuple]= {}
108+
moduleCache[name][args][kwargs_tuple]=mod
101109
returnmod
102110

103111
returnmoduleFactory

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp