Kaydet (Commit) c9423109 authored tarafından Raymond Hettinger's avatar Raymond Hettinger

Factor-out common code for helper classes.

üst 16fe75e4
......@@ -633,7 +633,7 @@ class Counter(dict):
########################################################################
### ChainMap (helper for configparser)
### ChainMap (helper for configparser and string.Template)
########################################################################
class _ChainMap(MutableMapping):
......
......@@ -46,23 +46,7 @@ def capwords(s, sep=None):
####################################################################
import re as _re
class _multimap:
"""Helper class for combining multiple mappings.
Used by .{safe_,}substitute() to combine the mapping and keyword
arguments.
"""
def __init__(self, primary, secondary):
self._primary = primary
self._secondary = secondary
def __getitem__(self, key):
try:
return self._primary[key]
except KeyError:
return self._secondary[key]
from collections import _ChainMap
class _TemplateMetaclass(type):
pattern = r"""
......@@ -116,7 +100,7 @@ class Template(metaclass=_TemplateMetaclass):
if not args:
mapping = kws
elif kws:
mapping = _multimap(kws, args[0])
mapping = _ChainMap(kws, args[0])
else:
mapping = args[0]
# Helper function for .sub()
......@@ -142,7 +126,7 @@ class Template(metaclass=_TemplateMetaclass):
if not args:
mapping = kws
elif kws:
mapping = _multimap(kws, args[0])
mapping = _ChainMap(kws, args[0])
else:
mapping = args[0]
# Helper function for .sub()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment