[Zope-Checkins] CVS: Zope/lib/python/ZConfig - matcher.py:1.8

Fred L. Drake, Jr. fred@zope.com
Fri, 14 Feb 2003 15:24:09 -0500


Update of /cvs-repository/Zope/lib/python/ZConfig
In directory cvs.zope.org:/tmp/cvs-serv28569

Modified Files:
	matcher.py 
Log Message:
Make sure some additional opportunities for ValueError are converted
into ZConfig.DataConversionError.


=== Zope/lib/python/ZConfig/matcher.py 1.7 => 1.8 ===
--- Zope/lib/python/ZConfig/matcher.py:1.7	Thu Feb  6 11:45:36 2003
+++ Zope/lib/python/ZConfig/matcher.py	Fri Feb 14 15:24:08 2003
@@ -169,9 +169,13 @@
                     v = []
                     for s in values[i]:
                         if s is not None:
-                            v.append(s.getSectionDefinition().datatype(s))
-                        else:
-                            v.append(None)
+                            st = s.getSectionDefinition()
+                            try:
+                                s = st.datatype(s)
+                            except ValueError, e:
+                                raise ZConfig.DataConversionError(
+                                    e, s, (-1, -1, None))
+                        v.append(s)
                 elif ci.name == '+':
                     v = values[i]
                     for key, val in v.items():
@@ -180,7 +184,12 @@
                     v = [vi.convert(ci.datatype) for vi in values[i]]
             elif ci.issection():
                 if values[i] is not None:
-                    v = values[i].getSectionDefinition().datatype(values[i])
+                    st = values[i].getSectionDefinition()
+                    try:
+                        v = st.datatype(values[i])
+                    except ValueError, e:
+                        raise ZConfig.DataConversionError(
+                            e, values[i], (-1, -1, None))
                 else:
                     v = None
             elif name == '+':