[Zope-Checkins] CVS: Zope3/src/ZConfig - __init__.py:1.10 cfgparser.py:1.8
Fred L. Drake, Jr.
fred@zope.com
Fri, 1 Aug 2003 16:42:04 -0400
Update of /cvs-repository/Zope3/src/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv9177
Modified Files:
__init__.py cfgparser.py
Log Message:
Provide location information for failed substitutions.
=== Zope3/src/ZConfig/__init__.py 1.9 => 1.10 ===
--- Zope3/src/ZConfig/__init__.py:1.9 Thu May 1 15:34:56 2003
+++ Zope3/src/ZConfig/__init__.py Fri Aug 1 16:41:59 2003
@@ -115,10 +115,11 @@
"""Raised when interpolation source text contains syntactical errors."""
-class SubstitutionReplacementError(ConfigurationError, LookupError):
+class SubstitutionReplacementError(ConfigurationSyntaxError, LookupError):
"""Raised when no replacement is available for a reference."""
- def __init__(self, source, name):
+ def __init__(self, source, name, url=None, lineno=None):
self.source = source
self.name = name
- ConfigurationError.__init__(self, "no replacement for " + `name`)
+ ConfigurationSyntaxError.__init__(
+ self, "no replacement for " + `name`, url, lineno)
=== Zope3/src/ZConfig/cfgparser.py 1.7 => 1.8 ===
--- Zope3/src/ZConfig/cfgparser.py:1.7 Tue Jan 14 10:16:55 2003
+++ Zope3/src/ZConfig/cfgparser.py Fri Aug 1 16:41:59 2003
@@ -128,7 +128,7 @@
if not value:
value = ''
else:
- value = substitute(value, self.defs)
+ value = self.replace(value)
try:
section.addValue(key, value, (self.lineno, None, self.url))
except ZConfig.ConfigurationError, e:
@@ -164,7 +164,15 @@
self.error("cannot redefine " + `defname`)
if not isname(defname):
self.error("not a substitution legal name: " + `defname`)
- self.defs[defname] = substitute(defvalue, self.defs)
+ self.defs[defname] = self.replace(defvalue)
+
+ def replace(self, text):
+ try:
+ return substitute(text, self.defs)
+ except ZConfig.SubstitutionReplacementError, e:
+ e.lineno = self.lineno
+ e.url = self.url
+ raise
def error(self, message):
raise ZConfig.ConfigurationSyntaxError(message, self.url, self.lineno)