[Zodb-checkins] CVS: Zope/lib/python/zLOG - component.xml:1.9 datatypes.py:1.12

Chris McDonough cvs-admin at zope.org
Fri Oct 31 03:00:55 EST 2003


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

Modified Files:
	component.xml datatypes.py 
Log Message:
Add <warnfilter> section, which allows you to configure Python warning filters in zope.conf.  Useful for suppressing the USELESS DeprecationWarnings that emanate from TALGenerator wrt i18n.


=== Zope/lib/python/zLOG/component.xml 1.8 => 1.9 ===
--- Zope/lib/python/zLOG/component.xml:1.8	Mon Mar 24 17:32:41 2003
+++ Zope/lib/python/zLOG/component.xml	Fri Oct 31 03:00:24 2003
@@ -58,4 +58,12 @@
      <multisection type="zLOG.loghandler" attribute="handlers" name="*"/>
   </sectiontype>
 
+  <sectiontype name="warnfilter" datatype=".warning_filter_handler">
+      <key name="action" datatype=".warn_action" default="default"/>
+      <key name="message" default=""/>
+      <key name="category" datatype=".warning_subclass" default="Warning"/>
+      <key name="module" default=""/>
+      <key name="lineno" datatype="integer" default="0"/>
+  </sectiontype>
+
 </component>


=== Zope/lib/python/zLOG/datatypes.py 1.11 => 1.12 ===
--- Zope/lib/python/zLOG/datatypes.py:1.11	Sat Aug  2 01:45:51 2003
+++ Zope/lib/python/zLOG/datatypes.py	Fri Oct 31 03:00:24 2003
@@ -238,3 +238,50 @@
             if handler_level < lowest:
                 lowest = factory.getLevel()
         return lowest
+
+def importable_name(name):
+    try:
+        components = name.split('.')
+        start = components[0]
+        g = globals()
+        package = __import__(start, g, g)
+        modulenames = [start]
+        for component in components[1:]:
+            modulenames.append(component)
+            try:
+                package = getattr(package, component)
+            except AttributeError:
+                n = '.'.join(modulenames)
+                package = __import__(n, g, g, component)
+        return package
+    except ImportError:
+        raise ValueError, (
+            'The object named by "%s" could not be imported' %  name )
+
+def warning_subclass(val):
+    ob = importable_name(val) # will fail in course
+    try:
+        if not issubclass(ob, Warning):
+            raise ValueError, (
+                'warning category "%s" must be a Warning subclass' % val)
+    except TypeError:
+            raise ValueError, (
+                'warning category "%s" must be a Warning subclass' % val)
+        
+    return ob
+
+def warn_action(val):
+    OK = ("error", "ignore", "always", "default", "module", "once")
+    if val not in OK:
+        raise ValueError, "warning action %s not one of %s" % (val, OK)
+    return val
+
+def warning_filter_handler(section):
+    import warnings
+    # add the warning filter
+    warnings.filterwarnings(section.action, section.message, section.category,
+                            section.module, section.lineno, 1)
+    return section
+
+
+




More information about the Zodb-checkins mailing list